微机原理与汇编语言第06章

上传人:我** 文档编号:118283190 上传时间:2019-12-12 格式:PPT 页数:115 大小:813KB
返回 下载 相关 举报
微机原理与汇编语言第06章_第1页
第1页 / 共115页
微机原理与汇编语言第06章_第2页
第2页 / 共115页
微机原理与汇编语言第06章_第3页
第3页 / 共115页
微机原理与汇编语言第06章_第4页
第4页 / 共115页
微机原理与汇编语言第06章_第5页
第5页 / 共115页
点击查看更多>>
资源描述

《微机原理与汇编语言第06章》由会员分享,可在线阅读,更多相关《微机原理与汇编语言第06章(115页珍藏版)》请在金锄头文库上搜索。

1、第6章 汇编语言程序设计及应用举例 本章重点: 进一步熟悉理解8086/8088微处理器的指令。 掌握二进制及十进制算术运算指令及程序设计的 方法,掌握XLAT转换指令及查表程序设计,理解 位运算指令包括逻辑运算指令和移位指令及应用. 了解串处理指令的功能,掌握常用的DOS功能调 用和BIOS中断调用指令的使用方法,能综合应用 汇编指令编写格式正确的汇编源程序等。 第6章 汇编语言程序设计及应用举例 6.1 算术运算程序设计 6.2 数码转换 6.3 查表程序设计 6.4 逻辑运算 6.5 字符串处理 6.6 系统的功能调用 6.7 综合编程应用举例 6.1 算术运算程序设计 四则运算是计算机

2、经常进行的一种操作。算 术运算指令实现二进制(和十进制)数据的四 则运算 请注意算术运算类指令对标志的影响 掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMP 熟悉:MUL/IMUL、DIV/IDIV 理解:CBW/CWD、DAA/DAS、 AAA/ AAS/AAM/AAD 6.1.1 加法类指令 1加法指令ADD 功能:OPRD1OPRD1+OPRD2 完成两个操作数相加,结果送至目的操作数 OPRD1。目的操作数可以是累加器,通用寄存器 及存储器操作数。ADD指令影响所有标志位CF、 DF、PF、SF、ZF和AF。 MOV AX,2 ;(AX)=2 MOV BX,4 ;

3、(BX)=4 ADD AX,BX ;(AX)=6 例6.1.1:加法运算 mov al,0fbh ;al=0fbh add al,07h;al=02h mov word ptr 200h,4652h ;200h=4652h mov bx,1feh ;bx=1feh add al,bl;al=00h add word ptr bx+2,0f0f0h ;200h=3742h ADDADD 1加法指令ADD 例如: ADD AL,30 ;累加器与立即数相加 ADD BX,3000H ;通用寄存器与存储单元内容相加 ADD DI,CX ;通用寄存器之间 ADD DX,DATABX+SI ;通用寄存器与

4、存储单元内容相加 ADD BUFFSI,DX ;存储器操作数与寄存器相加 6.1 算术运算程序设计 2加进位的加法指令ADC 格式:ADC OPRD1,OPRD2 功能:OPRD1OPRD1+OPRD2+CF 这条指令与上条指令类似,只是在两个操作数相加 时,要把进位标志CF的现行值加上去,结果送至目的操 作数。这条指令对标志位的影响与ADD相同。 例:计算13579BDF H十02468ACE H的值。 MOV DX,1357H MOV AX,9BDFH ADD AX,8ACEH ;CF=1,(AX)=26ADH ADC DX,0246H ;(DX)=159EH 例6.1.2:双字加法 mo

5、v ax,4652h;ax=4652h add ax,0f0f0h ;ax=3742h,CF=1 mov dx,0234h;dx=0234h adc dx,0f0f0h ;dx=f325h,CF=0 ;DX.AX0234 4652H F0F0 F0F0H F325 3742H ADCADC 6.1 算术运算程序设计 格式:INC OPRD 功能:OPRDOPRD+1 完成对指定的操作数OPRD加1,然后返回此操作数。此指令主 要用于在循环程序中修改地址指针和循环次数等。INC指令执行的结 果不影响CF位,而对其它5个标志位AF、OF、PF、SF和ZF有影响 。 例如: MOV AL,-2 ;(

6、AL)= -2 ADD AL,1 ;(AL=-1,CF=0 ADD AL,1 ;(AL)=0,CF=1 ADC AL,4 ;(AL)=5,CF=0 MOV AL,-2 ;(AL)= -2 ADD AL,1 ;(AL)= -1,CF=0 INC AL ;(AL)=0,CF=0 ADC AL,4 ;(AL)=4,CF=0 3加1指令INC 6.1 算术运算程序设计 1减法指令SUB 格式:SUB OPRD1,OPRD2 功能:OPRD1OPRD1OPRD2 完成两个操作数相减,也即从OPRD1中 减去OPRD2,结果放在OPRD1中。 例如: SUB CX,BX SUB BP,CL 6.1.2 减

7、法类指令 例6.1.3:减法运算 mov al,0fbh ;al=0fbh sub al,07h;al=0f4h,CF0 mov word ptr 200h,4652h ;200h=4652h mov bx,1feh ;bx=1feh sub al,bl;al=0f6h sub word ptr bx+2,0f0f0h ;200h=5562h,CF1 SUBSUB 6.1 算术运算程序设计 格式:SBB OPRD1,OPRD2 功能:OPRD1OPRD1OPRD2CF 这条指令与SUB类似,只是在两个操作数相减时,还要 减去借位标志CF的现行值。本指令对标志位AF、CF、OF 、PF、SF和Z

8、F都有影响。同ADC指令一样,本指令主要 用于多字节操作数相减。 例6.1.3:计算13579BDF H-02468ACE H的值。 MOV AX,9BDFH SUB AX,8ACEH ;CF=0,(AX)=1111H MOV DX,1357H SBB DX,0246H ;(DX)=1111H 2带借位的减法指令SBB 例6.1.3b:双字减法 mov ax,4652h;ax=4652h sub ax,0f0f0h ;ax=5562h,CF=1 mov dx,0234h;dx=0234h sbb dx,0f0f0h ;dx=1143h,CF=1 ;DX.AX0234 4652H F0F0 F0

9、F0H 1143 5562H SBBSBB 6.1 算术运算程序设计 格式:DEC OPRD 功能:OPRDOPRD1 对指令的操作数减1,然后送回此操作数。在 相减时,把操作数作为一个无符号二进制数来对 待。指令执行的结果,影响标志AF、OF、PF、 SF和ZF,但对CF标志不影响(即保持此指令以前 的值)。 例如:CLC ;CF=0 MOV AX,0 ;(AX)=0,CF=0 DEC AX ;(AX)= -1,CF=0 SBB AX,3 ;(AX)= -4,CF=0 3减1指令DEC INC指令和DEC指令都是单操作数指令 主要用于对计数器和地址指针的调整 DEC指令对操作数减1(减量)

10、DEC指令不影响进位CF标志,按定义 设置其他状态标志 6.1 算术运算程序设计 格式:NEG OPRD 功能:OPRD0OPRD 对操作数取补,即用零减去操作数,再把结果送 回操作数。求补运算属于减法运算,只不过被减数 为0。 例:假设AL=4, 执行 NEG AL后,(AL)=11111100=-4补 4求补指令NEG 例:MOV AH,5 NEG AH ;AH=11111011B,是-5(补码) MOV AX,-6 NEG AX ;AX=0006H,是+6 注:操作数为0,结果不变;操作数为-128或-32768,结 果数值不变,但置OF=1;NEG指令影响所有标志位。此 指令的结果一般

11、总是使标志CF=1。除非在操作数为零时 ,才使CF=0。 例:MOV AL,3 ;(AL)=3,CF=0 NEG AL ;(AL)=-3,CF=1 NEG AL ;(AL)=3,CF=1 例6.1.4:求补运算 mov ax,0ff64h neg al ;ax=ff9ch,OF=0、SF=1、ZF=0、PF=1、CF=1 sub al,9dh ;ax=ffffh,OF=0、SF=1、ZF=0、PF=1、CF=1 neg ax ;ax=0001h,OF=0、SF=0、ZF=0、PF=0、CF=1 dec al ;ax=0000h,OF=0、SF=0、ZF=1、PF=1、CF=1 neg ax ;

12、ax=0000h,OF=0、SF=0、ZF=1、PF=1、CF=0 NEGNEG 6.1 算术运算程序设计 格式:CMP OPRD1,OPRD2 功能:OPRD1OPRD2 比较指令完成两个操作数相减,使结果反映在标 志位上,但不送回结果。 例如:CMP AL,100 CMP DX,DI CMP CX,COUHTBP CMP COUNTSI,AX 5比较指令CMP 例6.1.4:比较AL与100 cmp al,100;al-100 jb below ;al9,则(AL)+6AL, 1AF。 调整十位。若CF=1或AL高4位9,则(AL)+60HAL ,1CF 6.2.1 十进制调整指令 表6-

13、1 十进制调整指 令 指令 格式 指令说明 DAA压缩 的BCD码 加法调整 DAS压缩 的BCD码 减法调整 AAA非压缩 的BCD 码加法调整 AAS非压缩 的BCD 码减法调整 AAM乘法后的BCD 码调 整 AAD除法前的BCD 码调 整 BCD码(Binary Coded Decimal),是用4位二进制数表示1 位十进制数的编码方式,也称为二一十进制数,或称8421 码。所以在计算机中人们用BCD码表示十进制数,对BCD 码计算机中有两种表示方法:一类为压缩BCD码,即规定 每个字节表示两位BCD数;另一类称为非压缩BCD码,即 用一个字节表示一位BCD数,在这字节的高四位用0填充

14、。 例如,十进制数25,表示为压缩BCD数时为:25H;表示为 非压缩BCD数时为:0205H,用两字节表示。相关的BCD 转换指令见表6-1。 6.2.1 十进制调整指令 q 压缩BCD码就是通常的 8421码;它用4个二进制位 表示一个十进制位,一个字 节可以表示两个十进制位, 即0099 q 非压缩BCD码用8个二进 制位表示一个十进制位,只 用低4个二进制位表示一个 十进制位09,高4位任意 ,通常默认为0 十进制数调整指令对二进制运算的结果进行十进 制调整,以得到十进制的运算结果 分成压缩BCD码和非压缩BCD码调整 例6.2.1:设(BCD1)=1234H, (BCD2)=6789

15、H。求(BCD1)十(BCD2)的值 。结果存BCD3中。如图6-2所示。 MOV AL,BCD1 ;(AL)=34H ADD AL,BCD2 ;(AL)=BDH,AF=0,CF=0 DAA ;(AL)=23H,AF=1,CF=1 MOV BCD3,AL MOV AL,BCDl+1 ;(AL)=12H ADC AL,BCD2+1 ;(AL)=7AH,AF=0,CF=0 DAA ;(AL)=80H,AF=1,CF=0 MOV BCD3+1,AL 6.2 数码转换 2. DAS指令 格式:DAS 功能:必须跟在SUB或SBB后使用,将存于AL 寄存器中的2位压缩型BCD码减法运算的结果进行 调整,调整后结果仍保留在AL中。调整办法: 调整个位。若AF=1或AL低4位9,则(AL)- 6AL,1AF。 调整十位。若CF=1或AL高4位9,则(AL)- 60HAL,1CF。 例:计算85-57的值。 MOV AL,85H SUB AL,57H ;(AL)=2EH,AF=1,CF=0 DAS ;(AL)=28H,AF

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

当前位置:首页 > 高等教育 > 大学课件

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