下载此文档

3.5算术运算指令解答.ppt


文档分类:IT计算机 | 页数:约30页 举报非法文档有奖
1/30
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/30 下载此文档
文档列表 文档介绍
、减法运算操作数通用寄存器通用寄存器立即数存储器±立即数通用寄存器±存储器目的操作数源操作数3(1) ADD:不带进位的加法指令格式:ADDmem/reg,dataADD mem/reg1, reg2/:①ADD AX,3A5FH;AX + 3A5FH → AX②ADD AL,[BX] ;将EA=BX的内存单元的;内容+AL→AL③ADD [BX],AX ;将EA=BX的内存单元的;内容+AX →该内存单元4ADD指令对6个状态标志均产生影响例:已知(BX)=D75FH指令ADD BX,8046H 执行后,状态标志各是多少?结果:C=1, Z=0, P=1, A=1, O=1, S=0 ?源和目的操作数不能同时为存储器操作数?立即数不能作为目的操作数D75FH = 1101 0111 0101 1111 8046H = 1000 0000 0100 0110 1 1 11 11 0101 0111 1010 01015(2) ADC:带进位位的加法指令ADC指令在形式上和功能上与ADD类似,只是相加时还要包括进位标志CF的内容,例如:ADC AL,68H ;AL←(AL)+68H+(CF) ADC AX,CX ;AX←(AX)+(CX)+(CF) ADC BX,[DI] ;BX←(BX)+[DI+1][DI] +(CF)例1:设AL = 79H,BH = 0B3H,求执行指令ADD AL, BH后,AL = ?,BH = ?,各个标志位的值= ? 。解: 79H = 0111 1001 B = 121+) B3H = 1011 0011 B = -771 0010 1100 B = 44所以,AL = 0010 1100B = 2CH,BH = 0B3HSF = 0, ZF = 0, AF = 0CF = 1, OF = 0, PF = 0例2:求两个双字数据的和。数据1在DX(高字)和AX(低字)内,为12345678H;数据2在BX(高字)和CX(低字)内,为6789ABCDH。AX = 5 6 7 8 H+) CX = ABCD HAX = 0 2 4 5 HCF = 1解:因为8088的指令只能进行字/字节运算,所以对于双字运算必须分两步进行。第一步,低字和低字相加:ADD AX,CX第二步,高字和高字相加,同时要考虑低字之和的进位:ADC DX,BXDX = 1 2 3 4 HBX = 6 7 8 9 H+) CF = 1DX = 7 9 B E H CF= 0所以双字之和是79BE 0245H9例:有两个4字节的无符号数相加:2C56F8AC+309E47BE=?ADC指令用于多字节加法运算中设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区。而两个内存单元不能直接相加减,为此需要借助CPU内部寄存器如AX,作为桥梁。又因CPU只能进行8位或16位的加法运算,为此可将两数分成低字和高字分别相加。多字节加法示意图56H2CHBEH47HBUFFER1BUFFER2ACHF8H9EH30H被加数加数数据段......BUFFER1+2BUFFER2+2CLC(P29清进位标志位)MOV AX,BUFFER2ADC BUFFER1,AX MOV AX,BUFFER2+2ADC BUFFER1+2 ,AXMOV AX,BUFFER2ADD BUFFER1,AX ;低字相加MOV AX,BUFFER2+2ADC BUFFER1+2 ,AX ;高字相加,包括低字的进位

3.5算术运算指令解答 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数30
  • 收藏数0 收藏
  • 顶次数0
  • 上传人s0012230
  • 文件大小200 KB
  • 时间2016-12-20