好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

用debug写汇编程序.ppt

31页
  • 卖家[上传人]:大米
  • 文档编号:573027497
  • 上传时间:2024-08-14
  • 文档格式:PPT
  • 文档大小:247.66KB
  • / 31 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 计算机数据采集系统第4章 用debug编写汇编程序 4.1 机器语言与汇编语言机器语言与汇编语言 一、机器语言一、机器语言 机器语言是机器语言是机器指令机器指令的集合 机器指令展开来讲就是一台机器可以正确执行的机器指令展开来讲就是一台机器可以正确执行的命令电子计算机的机器指令是一列命令电子计算机的机器指令是一列二进制数字二进制数字计算机将之转变为一列算机将之转变为一列高低电平高低电平,以使计算机的,以使计算机的电子器电子器件件受到驱动,进行运算受到驱动,进行运算 用机器语言编写的程序是计算机唯一能够直接识用机器语言编写的程序是计算机唯一能够直接识别并执行的程序,而用其他语言编写的程序必须经过别并执行的程序,而用其他语言编写的程序必须经过翻译翻译才能变换成机器语言程序,所以,机器语言程序才能变换成机器语言程序,所以,机器语言程序被称为被称为目标程序目标程序 二、机器语言的缺点二、机器语言的缺点 早期的程序设计均使用机器语言程序员们将用0、1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸纸带带机机或卡卡片片机机输入计算机,进行运算。

      Ø应用8086CPU完成运算s=768+12288-1280,机器码如下: 101100000000000000000011 000001010000000000110000 001011010000000000000101Ø假如将程序错写成以下这样,请读者找出错误 101100000000000000000011 000001010000000000110000 000101101000000000000101 要书写和阅读机器码程序不是一件简单的工作,要记住所有抽象的二进制码上面只是一个非常简单的小程序,就暴露了机器码的晦涩难懂和不易查错写如此小的一个程序尚且如此,实际上一个有用的程序至少要有几十行几十行机器码试想:如果程序里有一个“1”被误写为“0”,又如何去查找呢? 三、汇编语言三、汇编语言Ø为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用变量代替操作数的存放地址等,这样就形成了汇编语言Ø汇编语言的主体是汇编指令汇编指令和机器指令的差别在于指令的表示方法上。

      汇编指令是机器指令便于记忆的书写格式 例如:例如:机器指令机器指令10001001110110001000100111011000表示把寄存器表示把寄存器BXBX的内容的内容送到送到AXAX中汇编指令则写成中汇编指令则写成movmov ax,bxax,bx这样的写法与这样的写法与人类语言接近,便于阅读和记忆人类语言接近,便于阅读和记忆 操作:寄存器BX的内容送到AX中 机器指令:1000100111011000 汇编指令:mov ax,bx Ø用汇编语言编写的程序称为汇编源程序汇编源程序Ø汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序汇编程序 4.2 第一个汇编程序第一个汇编程序4.2.1 相关的相关的debug命令命令一、用一、用E输入机器语言程序,用输入机器语言程序,用G运行运行 -D 100 -F 100 17F 00 -D 100 -E 100 B2 01 B4 02 CD 21 CD 20 -D 100 -G=100注:注:G [=G [=运行起始地址运行起始地址] ]。

      若省略起始地址,则从若省略起始地址,则从CSCS::IPIP处开始运行处开始运行 二、用二、用A输入汇编语言程序,用输入汇编语言程序,用U反汇编反汇编 -D 100 - F 100 17F 00 - A 100 MOV DL, 01 MOV AH, 02 INT 21 INT 20 - U 100 -G=100 4.2.2 汇编与反汇编汇编与反汇编一、汇编:汇编语言一、汇编:汇编语言→机器语言机器语言 工具:手工做;工具:手工做; DEBUGDEBUG的的A A命令;命令; MASMMASM、、TASMTASM等汇编软件等汇编软件二、反汇编:机器语言二、反汇编:机器语言→汇编语言汇编语言 工具:工具:DEBUGDEBUG的的U U命令;命令; TRWTRW等工具软件等工具软件三、三、A命令命令 -A [地址地址] 该命令从指定地址开始允许输入汇编语句从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。

      四、四、U命令命令 1 1))-U [-U [地址地址] ] 该命令从指定地址开始,反汇编从指定地址开始,反汇编3232个字个字节若地址省略,则从上一个U命令的最后一条指令的下一单元开始显示32个字节2 2))-U -U 范围范围 该命令对指定范围内存单元指定范围内存单元进行反汇编 4.2.3 第一个程序的含义第一个程序的含义 一、一、 DOS系统功能调用(课本系统功能调用(课本P471)) 对8086系列机来说,MS-DOS操作系统是最主要的操作系统MS-DOS操作系统除了具有较为完整的文件管理功能之外,同时还为各种应用程序、外围设备等提供软件接口 DOSDOS系统功能调用系统功能调用是DOS为用户提供的常用子程序,可在汇编语言中直接调用 DOSDOS系统功能调用的方法一般可分为以下几步:系统功能调用的方法一般可分为以下几步: ① 设置所要调用功能的入口参数 ② 在AH寄存器中存入所要调用功能的功能号 ③ INT 21H指令自动转入中断子程序入口 ④ 相应中断子程序运行完毕,可按规定取得出口参数。

      二、常用的二、常用的DOS系统功能调用系统功能调用Ø 单字符输入(1号调用)Ø 单字符显示(2号调用)Ø 打印输出 (5号调用)Ø 结束调用 (4CH号调用)Ø 显示字符串(9号调用)Ø 字符串输入(0AH号调用)例如:单字符显示(例如:单字符显示(2号调用)号调用)格式: MOV DL,待显示字符的ASCII码 MOV AH,2  INT 21功 能 : 将 DL寄 存 器 中 的 字 符 送 显 示 器 显 示 , 如 果 DL中 为〈CTRL〉+〈BREAK〉的ASCII码,则退出 三、三、 第一个程序第一个程序 MOV DL, 01 MOV AH, 02 INT 21 INT 20 思考:如何显示其他的ASCII字符? (能说出两种修改方法吗?) 4.3 扩展第一个汇编程序扩展第一个汇编程序例如:下面的程序可显示满屏的例如:下面的程序可显示满屏的 ☺ (笑脸) ((无限循环)无限循环) MOV DL, 01 MOV AH, 02 INT 21 JMP 0100 4.4 全部全部ASCII字符显示程序字符显示程序要求:要求: 编写一程序,在屏幕上显示所有的编写一程序,在屏幕上显示所有的ASCIIASCII字符。

      当程序编写好以后,可以把它保存在磁字符当程序编写好以后,可以把它保存在磁盘中,以便直接从盘中,以便直接从DOSDOS执行程序而不必进入执行程序而不必进入DEBUGDEBUG才能执行才能执行 4.4.1 几个新的几个新的DEBUG命令命令一、一、N命令(命令(NAME))◆◆用法:用法:N N 文件名文件名◆◆作用:作用:设定好设定好L L和和W W命令所要用到的文件名命令所要用到的文件名 此命令设置好一个文件名然后就可以用L命令把此文件装入内存中,或者用W命令把内存中的程序保存到此文件中二、二、L命令(命令(LOAD))◆◆用法:用法:L [L [地址地址] ]◆◆作用:作用: 把由N命令所设置好的一个文件,装入到由地址 开始的内存中 装入完成后,BX和CX中保存了所读文件的字节数三、三、W命令(命令(WRITE))◆◆用法:用法:W [W [地址地址] ]◆◆作用:作用:把指定内存区域中的数据写入由N命令所设置好 的一个文件中在用此命令前,BX和CX中应包含 要写入文件的字节数。

      4.4.2 把内存中的程序保存到磁盘文件中把内存中的程序保存到磁盘文件中 文件名; 要设置好三要素三要素 程序在内存中的起始地址; 程序的大小用N N命令命令设置好文件名用R R命令命令设置好BX和CX的值(程序的大小)用W W命令命令保存程序(在保存时要指定起始地址) 例:保存第一个程序例:保存第一个程序 C:\>debug -F 100 17F 00 -A 100 0B3E:0100 MOV DL,01 0B3E:0102 MOV AH,02 0B3E:0104 INT 21 0B3E:0106 INT 20 0B3E:0108 -N C:\1ST.COM -R BX BX 0000 : -R CX CX 0000 :8 -W 100 Writing 00008 bytes -Q C:\> 例:在例:在DOS下执行第一个程序下执行第一个程序 C:\>dir 1st*.* Volume in drive C is NTFSCCCC Volume Serial Number is FC03-2958 Directory of C:\ 2003-09-07 18:51 8 1ST.COM 1 File(s) 8 bytes 0 Dir(s) 1,080,619,008 bytes free C:\>1st ☺ C:\> 例:在例:在DEBUG下执行第一个程序下执行第一个程序方法一:方法一: C:\>DEBUG 1ST.COM -G=100 ☺ Program terminated normally - 方法二:方法二: C:\>DEBUG -N C:\1ST.COM -L 100 -G=100 ☺ Program terminated normally - 4.4.3 显示全部显示全部ASCII字符的程序字符的程序一、输入一、输入ASCII程序,并将其保存在磁盘上,文件名:程序,并将其保存在磁盘上,文件名:ALLASC.com C:\>DEBUG -A 100 0B3E:0100 MOV DL, 00 0B3E:0102 MOV AH, 02 0B3E:0104 INT 21 0B3E:0106 INC DL 0B3E:0108 JMP 102 0B3E:010A -U 100 109 0B3E:0100 B200 MOV DL,00 0B3E:0102 B402 MOV AH,02 0B3E:0104 CD21 INT 21 0B3E:0106 FEC2 INC DL 0B3E:0108 EBF8 JMP 0102 -N ALLASC.COM -R BX BX 0000 : - -R CX CX 0000 :0A -W 100 Writing 0000A bytes -Q C:\> 二、在二、在MS-DOS命令行状态下执行命令行状态下执行ALLASC.com 在DOS下用DIR命令查看,发现ALLASC.com只有10个字节。

      直接敲入文件名ALLASC可执行此程序屏幕上一遍又一遍地显示所有的ASCII字符,并且伴随着“叮”“叮”的声音需要用CTRL-BREAK中断) 三、用三、用DEBUG重新装入重新装入ALLASC.com,,并在并在DEBUG下下运行运行 四、进一步改善四、进一步改善ALLASC.com 只显示一遍所有ASCII字符,然后自动回到DOS(若从DEBUG运行就回到DEBUG)而不必用CTRL+C中断 C:\>DEBUG -A 100 0B3E:0100 MOV CX, 100 0B3E:0103 MOV DL, 00 0B3E:0105 MOV AH, 02 0B3E:0107 INT 21 0B3E:0109 INC DL 0B3E:010B LOOP 105 0B3E:010D INT 20 0B3E:010F - -U 100 10D 0B3E:0100 B90001 MOV CX,0100 0B3E:0103 B200 MOV DL,00 0B3E:0105 B402 MOV AH,02 0B3E:0107 CD21 INT 21 0B3E:0109 FEC2 INC DL 0B3E:010B E2F8 LOOP 0105 0B3E:010D CD20 INT 20 - -N ALLASC-1.COM -R BX BX 0000 : -R CX CX 0000 :0F -W 100 Writing 0000F bytes -Q C:\> 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.