用debug写汇编程序课件

上传人:我*** 文档编号:141926263 上传时间:2020-08-14 格式:PPT 页数:31 大小:75KB
返回 下载 相关 举报
用debug写汇编程序课件_第1页
第1页 / 共31页
用debug写汇编程序课件_第2页
第2页 / 共31页
用debug写汇编程序课件_第3页
第3页 / 共31页
用debug写汇编程序课件_第4页
第4页 / 共31页
用debug写汇编程序课件_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《用debug写汇编程序课件》由会员分享,可在线阅读,更多相关《用debug写汇编程序课件(31页珍藏版)》请在金锄头文库上搜索。

1、计算机数据采集系统,第4章 用debug编写汇编程序,4.1 机器语言与汇编语言,一、机器语言 机器语言是机器指令的集合。 机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。 用机器语言编写的程序是计算机唯一能够直接识别并执行的程序,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序,所以,机器语言程序被称为目标程序。,二、机器语言的缺点,早期的程序设计均使用机器语言。程序员们将用0、1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运

2、算。 应用8086CPU完成运算s=768+12288-1280,机器码如下: 101100000000000000000011 000001010000000000110000 001011010000000000000101 假如将程序错写成以下这样,请读者找出错误。 101100000000000000000011 000001010000000000110000 000101101000000000000101,要书写和阅读机器码程序不是一件简单的工作,要记住所有抽象的二进制码。 上面只是一个非常简单的小程序,就暴露了机器码的晦涩难懂和不易查错。写如此小的一个程序尚且如此,实际上一个有

3、用的程序至少要有几十行机器码。 试想:如果程序里有一个“1”被误写为“0”,又如何去查找呢?,三、汇编语言,为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用变量代替操作数的存放地址等,这样就形成了汇编语言。 汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。 例如:机器指令1000100111011000表示把寄存器BX的内容送到AX中。汇编指令则写成mov ax,bx。这样的写法与人类语言接近,便于阅读和记忆。 操作:寄存器BX的内容送到AX中 机器指令:1000100111011000 汇编指令:mov ax,bx,

4、用汇编语言编写的程序称为汇编源程序。 汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行。这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。,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 =运行起始地址。若省略起始地址,则从CS:IP处开始运行。,二、用A输入汇编语言程序,用U反汇编,

5、-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 汇编与反汇编,一、汇编:汇编语言机器语言 工具:手工做; DEBUG的A命令; MASM、TASM等汇编软件。 二、反汇编:机器语言汇编语言 工具:DEBUG的U命令; TRW等工具软件。 三、A命令 -A 地址,该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。 四、U命令 1)-U 地址 该命令从指定地址开始,反汇编32个字节。若地址省略,则从上一个U命令的最后一条指令的下一

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

7、。,二、常用的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 扩展第一个汇编程序,例如:下面的程序可显示

8、满屏的Happy Face (无限循环)。 MOV DL, 01 MOV AH, 02 INT 21 JMP 0100,4.4 全部ASCII字符显示程序,要求: 编写一程序,在屏幕上显示所有的ASCII字符。当程序编写好以后,可以把它保存在磁盘中,以便直接从DOS执行程序而不必进入DEBUG才能执行。,4.4.1 几个新的DEBUG命令,一、N命令(NAME) 用法:N 文件名 作用:设定好L和W命令所要用到的文件名。 此命令设置好一个文件名。然后就可以用L命令把此文件装入内存中,或者用W命令把内存中的程序保存到此文件中。 二、L命令(LOAD) 用法:L 地址 作用: 把由N命令所设置好的

9、一个文件,装入到由地址 开始的内存中。,装入完成后,BX和CX中保存了所读文件的字节数。 三、W命令(WRITE) 用法:W 地址 作用:把指定内存区域中的数据写入由N命令所设置好 的一个文件中。在用此命令前,BX和CX中应包含 要写入文件的字节数。,4.4.2 把内存中的程序保存到磁盘文件中,文件名; 要设置好三要素 程序在内存中的起始地址; 程序的大小 用N命令设置好文件名 用R命令设置好BX和CX的值(程序的大小) 用W命令保存程序(在保存时要指定起始地址),例:保存第一个程序,C:debug -F 100 17F 00 -A 100 0B3E:0100 MOV DL,01 0B3E:0

10、102 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

11、,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:01

12、04 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下

13、用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:01

14、07 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:,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号