教学提示.ppt

上传人:本田雅阁 文档编号:3151704 上传时间:2019-07-17 格式:PPT 页数:87 大小:974.02KB
返回 下载 相关 举报
教学提示.ppt_第1页
第1页 / 共87页
教学提示.ppt_第2页
第2页 / 共87页
教学提示.ppt_第3页
第3页 / 共87页
教学提示.ppt_第4页
第4页 / 共87页
教学提示.ppt_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《教学提示.ppt》由会员分享,可在线阅读,更多相关《教学提示.ppt(87页珍藏版)》请在三一文库上搜索。

1、教学提示,全面而准确地理解每条指令的功能和应用,是编写汇编语言程序的关键,逐个展开指令,2.3 数据传送类指令,数据传送是计算机中最基本、最重要的一种操作 传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握 MOV XCHG XLAT PUSH POP LEA,2.3.1 通用数据传送指令,提供方便灵活的通用传送操作 有3条指令 MOV XCHG XLAT,MOV,XCHG,XLAT,传送指令MOV(move),把一个字节或字的操作数从源地址传送至目的地址,MOV reg/mem,imm ;立即数送寄存器或主存,MOV,例

2、题2.1,MOV reg/mem/seg,reg ;寄存器送(段)寄存器或主存,例题2.2,MOV reg/seg,mem ;主存送(段)寄存器,例题2.3,MOV reg/mem,seg ;段寄存器送寄存器或主存,例题2.5,例2.1:立即数传送,mov al,4 ;al4,字节传送 mov cx,0ffh ;cx00ffh,字传送 mov si,200h ;si0200h,字传送 mov byte ptr si,0ah ;byte ptr 说明是字节操作 mov word ptr si+2,0bh ;word ptr 说明是字操作,注意立即数是字节量还是字量 明确指令是字节操作还是字操作,

3、MOV,例2.2:寄存器传送,mov ax,bx ;axbx,字传送 mov ah,al ;ahal,字节传送 mov ds,ax ;dsax,字传送 mov si,al ;sial,字节传送,MOV,例2.3:存储器传送,mov al,bx mov dx,bp ;dxss:bp mov es,si ;esds:si,不存在存储器向存储器的传送指令,MOV,例2.5:段寄存器传送,mov si,ds mov ax,es ;axes mov ds,ax ;dsaxes,对段寄存器的操作有一些限制,MOV,MOV指令传送功能,MOV也并非任意传送,非法传送种种,两个操作数的类型不一致 例如源操作数

4、是字节,而目的操作数是字;或相反 两个操作数不能都是存储器 传送指令很灵活,但主存之间的直接传送却不允许 段寄存器的操作有一些限制 段寄存器属专用寄存器,对他们的操作能力有限,示例,示例,示例,两个操作数的类型要一致,绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令 MOV AL,050AH ;非法指令:050Ah为字,而AL为字节 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型 对于存储器单元与立即数同时作为操作数的情况,必须显式指明;byte ptr指示字节类型,word ptr指示字类型,两个操作数不能都是存储器,8086指

5、令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现 mov ax,buffer1 ;axbuffer1(将buffer1内容送ax) mov buffer2,ax ;buffer2ax ;这里buffer1和buffer2是两个字变量 ;实际表示直接寻址方式,要小心段寄存器的操作,不允许立即数传送给段寄存器 MOV DS,100H ;非法指令:立即数不能传送段寄存器 不允许直接改变CS值 MOV CS,SI ;不允许使用的指令 不允许段寄存器之间的直接数据传送 MOV DS,ES ;非法指令:不允许段寄存器间传送,交换指令XCHG(exchange),把两

6、个地方的数据进行互换,寄存器与寄存器之间对换数据 寄存器与存储器之间对换数据 不能在存储器与存储器之间对换数据,XCHG,XCHG reg,reg/mem ;reg reg/mem,例题2.7,例题2.6,例2.6:寄存器间交换,mov ax,1234h ;ax=1234h mov bx,5678h ;bx=5678h xchg ax,bx ;ax=5678h,bx=1234h xchg ah,al ;ax=7856h,XCHG,例2.7:寄存器与存储器交换,xchg ax,2000h ;字交换 ;等同于 xchg 2000h,ax xchg al,2000h ;字节交换 ;等同于 xchg

7、2000h,al,XCHG,换码指令执行前: 在主存建立一个字节量表格,内含要转换成的目的代码 表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后: 将AL寄存器的内容转换为目标代码,换码指令XLAT(translate),将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL,XLAT,XLAT ;alds:bx+al,例题2.8,例2.8:代码转换,mov bx,100h mov al,03h xlat,换码指令没有显式的操作数,但使用了BX和AL;因为换码指令使用了隐含寻址方式采用默认操作数,XLAT,2.3.2 堆栈操作指令,堆栈是一个“后进先出FILO”(

8、或说“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址 堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器SP指定 栈顶是地址较小的一端(低端),栈底不变,堆栈和队列,堆栈:按照后进先出(LIFO)的原则组织的存储器空间(栈) 队列:按照先进先出(FIFO)的原则组织的存储器空间,堆栈的操作,堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POP,PUSH ;进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部,POP ;出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP加2,进栈指令PUSH,push ax push 2000h,PUSH r16

9、/m16/seg ;SPSP2 ;SS:SPr16/m16/seg,PUSH,出栈指令POP,pop ax pop 2000h,POP r16/m16/seg ;r16/m16/segSS:SP ;SPSP2,POP,堆栈的特点,堆栈操作的单位是字,进栈和出栈只对字量 字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节 堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据 堆栈常用来 临时存放数据 传递参数 保存和恢复寄存器,例题2.11,例2.11:现场保护恢复,push ax ;进入子程序后 push bx push ds . pop ds ;返回主程序前

10、 pop bx pop ax,2.3.3 标志寄存器传送指令,标志寄存器传送指令用来传送标志寄存器FLAGS的内容,方便进行对各个标志位的直接操作 有2对4条指令 低8位传送:LAHF和SAHF 16位传送:PUSHF和POPF,标志低字节进出AH指令,LAHF ;AHFLAGS的低字节 LAHF指令将标志寄存器的低字节送寄存器AH SF/ZF/AF/PF/CF状态标志位分别送入AH的第7/6/4/2/0位,而AH的第5/3/1位任意,SAHF ;FLAGS的低字节AH SAHF将AH寄存器内容送FLAGS的低字节 用AH的第7/6/4/2/0位相应设置SF/ZF/AF/ PF/CF标志,标志

11、寄存器进出堆栈指令,PUSHF ;SPSP2 ;SS:SPFLAGS PUSHF指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,POPF ;FLAGSSS:SP ;SPSP2 POPF指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2,例题2.12,例2.12:置位单步标志,pushf ;保存全部标志到堆栈 pop ax ;从堆栈中取出全部标志 or ax,0100h ;设置D8=TF=1, ;ax其他位不变 push ax ;将ax压入堆栈 popf ;FLAGSAX ;将堆栈内容取到标志寄存器,2.3.4 地址传送指令,地址传送指令将存储器单元的逻辑地址送至指定的寄存器 有效地址

12、传送指令 LEA 指针传送指令 LDS和LES 注意不是获取存储器单元的内容,有效地址传送指令LEA(load EA),将存储器操作数的有效地址传送至指定的16位寄存器中,例题2.13,LEA r16,mem ;r16mem的有效地址EA,LEA,例2.13:获取有效地址,mov bx,0400h mov si,3ch lea bx,bx+si+0f62h ;BX0400h003ch0f62h139EH,获得主存单元的有效地址;不是物理地址,也不是该单元的内容 可以实现计算功能,LEA,指针传送指令,LDS r16,mem ;r16mem, ;DSmem+2 LDS指令将主存中mem指定的字送

13、至r16,并将mem的下一字送DS寄存器,LES r16,mem ;r16mem, ;ESmem+2 LES指令将主存中mem指定的字送至r16,并将mem的下一字送ES寄存器,例题2.14,例2.14:地址指针传送,mov word ptr 3060h,0100h mov word ptr 3062h,1450h les di,3060h ;es=1450h,di=0100h lds si,3060h ;ds=1450h,si=0100h,mem指定主存的连续4个字节作为逻辑地址(32位的地址指针),送入DS:r16或ES:r16,2.3.5 输入输出指令,8086通过输入输出指令与外设进行

14、数据交换;呈现给程序员的外设是端口(Port)即I/O地址 8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH 每个端口用于传送一个字节的外设数据,输入输出寻址方式,8086的端口有64K个,无需分段,设计有两种寻址方式 直接寻址:只用于寻址00HFFH前256个端口,操作数i8表示端口号 间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号 对大于FFH的端口只能采用间接寻址方式,输入指令IN,将外设数据传送给CPU内的AL/AX,IN AL,i8 ;字节输入:ALI/O端口(i8直接寻址) IN AL,DX ;字节输入:

15、ALI/O端口(DX间接寻址) IN AX,i8 ;字输入:AXI/O端口(i8直接寻址) IN AX,DX ;字输入:AXI/O端口(DX间接寻址),IN,例题2.15,演示,例2.15:输入字量,;直接寻址,字节量输入 in al,21h mov ah,al in al,20h ;直接寻址,字量输入 in ax,20h ;间接寻址,字量输入 mov dx,20h in ax,dx,两段功能相同 字量数据传送实际上实现了连续的两个端口地址的字节量传送,IN,输出指令OUT,将CPU内的AL/AX数据传送给外设,OUT i8,AL ;字节输出:I/O端口AL(i8直接寻址) OUT DX,AL

16、 ;字节输出:I/O端口AL(DX间接寻址) OUT i8,AX ;字输出:I/O端口AX(i8直接寻址) OUT DX,AX ;字输出:I/O端口AX(DX间接寻址),OUT,例题2.16,演示,例2.16:输出字节量,;间接寻址,字节量输出 mov dx,3fch mov al,80h out dx,al,OUT,2.4 算术运算类指令,四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算 请注意算术运算类指令对标志的影响 掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMP 熟悉:MUL/IMUL、DIV/IDIV 理解:CBW/CWD、

17、DAA/DAS、 AAA/ AAS/AAM/AAD,加法指令ADD,ADD指令将源与目的操作数相加,结果送到目的操作数 ADD指令按状态标志的定义相应设置,ADD,ADD reg,imm/reg/mem ;regregimm/reg/mem ADD mem,imm/reg ;memmemimm/reg,例题2.17,例2.17a:加法运算,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 b

18、x+2,0f0f0h ;200h=3742h,ADD,带进位加法指令ADC,ADC指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数 ADC指令按状态标志的定义相应设置 ADC指令主要与ADD配合,实现多精度加法运算,ADC,ADC reg,imm/reg/mem ;regregimm/reg/memCF ADC mem,imm/reg ;memmemimm/regCF,例题2.18,例2.18a:双字加法,mov ax,4652h ;ax=4652h add ax,0f0f0h ;ax=3742h,CF=1 mov dx,0234h ;dx=0234h adc dx,0f0f0

19、h ;dx=f325h,CF=0 ;DX.AX0234 4652H F0F0 F0F0H F325 3742H,ADC,增量指令INC(increment),INC指令对操作数加1(增量) INC指令不影响进位CF标志,按定义设置其他状态标志,INC,INC reg/mem ;reg/memreg/mem1,inc bx inc byte ptr bx,减法指令SUB(subtract),SUB指令将目的操作数减去源操作数,结果送到目的操作数 SUB指令按照定义相应设置状态标志,SUB,SUB reg,imm/reg/mem ;regregimm/reg/mem SUB mem,imm/reg

20、 ;memmemimm/reg,例题2.17,例2.17b:减法运算,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,SUB,带借位减法指令SBB,SBB指令将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数。 SBB指令按照定义相应设置状态标志 SBB指令主要与SUB配合,实现多精度减法运算,SBB,S

21、BB reg,imm/reg/mem ;regregimm/reg/memCF SBB mem,imm/reg ;memmemimm/regCF,例题2.18,例2.18b:双字减法,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 F0F0H 1143 5562H,SBB,减量指令DEC(decrement),DEC指令对操作数减1(减量) DEC指令不影响进位CF标志,按定义设置其他状态标志

22、,DEC,DEC reg/mem ;reg/memreg/mem1,dec cx dec word ptr si,INC指令和DEC指令都是单操作数指令 主要用于对计数器和地址指针的调整,求补指令NEG(negative),NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数 求补运算也可以表达成:将操作数按位取反后加1 NEG指令对标志的影响与用零作减法的SUB指令一样,NEG,NEG reg/mem ;reg/mem0reg/mem,例题2.19,例2.19:求补运算,mov ax,0ff64h neg al ;ax=ff9ch,OF=0、SF=1、ZF=0、PF=1、CF=

23、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 ;ax=0000h,OF=0、SF=0、ZF=1、PF=1、CF=0,NEG,比较指令CMP(compare),CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志 CMP指令执行的功能与SUB指令,但结果不回送目的操作数,CMP reg,imm/reg/mem ;regimm/reg/mem CMP mem,i

24、mm/reg ;memimm/reg,例题2.20,CMP,例2.20:比较AL与100,cmp al,100 ;al-100 jb below ;al100,跳转到below执行 sub al,100 ;al100, alal-100 inc ah ;ahah+1 below: .,执行比较指令之后,可以根据标志判断两个数是否相等、大小关系等,CMP,2.4.3 乘法指令,MUL r8/m8 ;无符号字节乘法 ;AXALr8/m8 MUL r16/m16 ;无符号字乘法 ;DX.AXAXr16/m16,IMUL r8/m8 ;有符号字节乘法 ;AXALr8/m8 IMUL r16/m16 ;

25、有符号字乘法 ;DX.AXAXr16/m16,例题2.21,说明,乘法指令的功能,乘法指令分无符号和有符号乘法指令 乘法指令的源操作数显式给出,隐含使用另一个操作数AX和DX 字节量相乘:AL与r8/m8相乘,得到16位的结果,存入AX 字量相乘:AX与r16/m16相乘,得到32位的结果,其高字存入DX,低字存入AX 乘法指令利用OF和CF判断乘积的高一半是否具有有效数值,乘法指令对标志的影响,乘法指令如下影响OF和CF标志: MUL指令若乘积的高一半(AH或DX)为0,则OF=CF=0;否则OF=CF=1 IMUL指令若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1 乘法指令

26、对其他状态标志没有定义,对标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还是1) 对标志没有影响:指令执行不改变标志状态,例2.21:乘法运算,mov al,0b4h ;al=b4h=180 mov bl,11h ;bl=11h=17 mul bl ;ax=Obf4h=3060 ;OF=CF=1,AX高8位不为0 mov al,0b4h ;al=b4h=76 mov bl,11h ;bl=11h=17 imul bl ;ax=faf4h=1292 ;OF=CF=1,AX高8位含有效数字,2.4.4 除法指令,DIV r8/m8 ;无符号字节除法: ALAXr8/m8的商

27、,AhAXr8/m8的余数 DIV r16/m16 ;无符号字除法: ;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数,IDIV r8/m8 ;有符号字节除法: ALAXr8/m8的商,AhAXr8/m8的余数 IDIV r16/m16 ;有符号字除法: ;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数,例题2.22,说明,除法指令的功能,除法指令分无符号和有符号除法指令 除法指令的除数显式给出,隐含使用另一个操作数AX和DX作为被除数 字节量除法:AX除以r8/m8,8位商存入AL,8位余数存入AH 字量除法:DX.AX除以r16/m16,16位商

28、存入AX,16位余数存入DX 除法指令对标志没有定义 除法指令会产生结果溢出,除法错中断,当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。如果存放商的寄存器AL/AX不能表达,便产生溢出,8086CPU中就产生编号为0的内部中断除法错中断 对DIV指令,除数为0,或者在字节除时商超过8位,或者在字除时商超过16位,则发生除法溢出 对IDIV指令,除数为0,或者在字节除时商不在-128127范围内,或者在字除时商不在-3276832767范围内,则发生除法溢出,例2.22:除法运算,mov ax,0400h ;ax=400h=1024 mov bl,0b4h ;bl=b4h=180

29、div bl ;商al05h5 ;余数ah7ch124 mov ax,0400h ;ax=400h=1024 mov bl,0b4h ;bl=b4h=76 idiv bl ;商alf3h13 ;余数ah24h36,2.4.5 符号扩展指令,CBW ;AL的符号扩展至AH ;如AL的最高有效位是0,则AH00 ;AL的最高有效位为1,则AHFFH。AL不变,CWD ;AX的符号扩展至DX ;如AX的最高有效位是0,则DX00 ;AX的最高有效位为1,则DXFFFFH。AX不变,什么是符号扩展 符号扩展指令常用于获得倍长的数据,不影响标志位,例题2.23,例题2.24,符号扩展的概念,符号扩展是指

30、用一个操作数的符号位(即最高位)形成另一个操作数,后一个操作数的各位是全0(正数)或全1(负数)。符号扩展不改变数据大小 对于数据64H(表示数据100),其最高位D7为0,符号扩展后高8位都是0,成为0064H(仍表示数据100) 对于数据ff00H(表示有符号数256),其最高位D15为1,符号扩展后高16位都是1,成为ffffff00H(仍表示有符号数256),例2.23:符号扩展,mov al,80h ;al=80h cbw ;ax=ff80h add al,255 ;al=7fh cbw ;ax=007fh,例2.24:AXBX,cwd ;DX.AXAX idiv bx ;AXDX.

31、AXBX,利用符号扩展指令得到除法指令所需要的倍长于除数的被除数 对无符号数除法应该采用直接使高8位或高16位清0的方法,获得倍长的被除数,2.4.6 十进制调整指令,压缩BCD码就是通常的8421码;它用4个二进制位表示一个十进制位,一个字节可以表示两个十进制位,即0099,非压缩BCD码用8个二进制位表示一个十进制位,只用低4个二进制位表示一个十进制位09,高4位任意,通常默认为0,十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果 分成压缩BCD码和非压缩BCD码调整,BCD码(Binary Coded Decimal),二进制编码的十进制数:一位十进制数用4位二进

32、制编码来表示 8086支持压缩BCD码和非压缩BCD码的调整运算 真值 8 64 二进制编码 08H 40H 压缩BCD码 08H 64H 非压缩BCD码 08H 0604H,压缩BCD码加、减调整指令,(ADD AL,i8/r8/m8) (ADC AL,i8/r8/m8) DAA ;AL将AL的加和调整为压缩BCD码,(SUB AL,i8/r8/m8) (SBB AL,i8/r8/m8) DAS ;AL将AL的减差调整为压缩BCD码,使用DAA或DAS指令前,应先执行以AL为目的操作数的加法或减法指令 DAA和DAS指令对OF标志无定义,按结果影响其他标志,例如CF反映压缩BCD码相加或减的

33、进位或借位状态,例题2.25a,例题2.25b,例题2.26,例2.25a:压缩BCD加法,mov al,68h ;al=68h,压缩BCD码表示真值68 mov bl,28h ;bl=28h,压缩BCD码表示真值28 add al,bl ;二进制加法:al=68h+28h=90h daa ;十进制调整:al=96h ;实现压缩BCD码加法:682896,例2.25b:压缩BCD减法,mov al,68h ;al=68h,压缩BCD码表示真值68 mov bl,28h ;bl=28h,压缩BCD码表示真值28 sub al,bl ;二进制减法:al=68h-28h=40h das ;十进制调整

34、:al=40h ;实现压缩BCD码加法:68-2840,例2.26:压缩BCD减法,mov ax,1234h mov bx,4612h sub al,bl das ;34-1222,CF0 xchg al,ah sbb al,bh das ;12-4666,CF=1 xchg al,ah ;1 123446126622,非压缩BCD码加、减调整指令,(ADD AL,i8/r8/m8) (ADC AL,i8/r8/m8) AAA ;AL将AL的加和调整为非压缩BCD码 ;AHAH调整的进位,(SUB AL,i8/r8/m8) (SBB AL,i8/r8/m8) AAS ;AL将AL的减差调整为非

35、压缩BCD码 ;AHAH调整的借位,使用AAA或AAS指令前,应先执行以AL为目的操作数的加法或减法指令 AAA和AAS指令在调整中产生了进位或借位,则AH要加上进位或减去借位,同时CF=AF=1,否则CF=AF=0;它们对其他标志无定义,例题2.27a,例题2.27b,例2.27a:非压缩BCD加,mov ax,0608h ;ax=0608h,非压缩BCD码表示真值68 mov bl,09h ;bl=09h,非压缩BCD码表示真值9 add al,bl ;二进制加法:al=08h+09h=11h aaa ;十进制调整:ax=0707h ;实现非压缩BCD码加法:68977,例2.27b:非压

36、缩BCD减,mov ax,0608h ;ax=0608h,非压缩BCD码表示真值68 mov bl,09h ;bl=09h,非压缩BCD码表示真值9 sub al,bl ;二进制减法:al=08h-09h=ffh aas ;十进制调整:ax=0509h ;实现非压缩BCD码减法:68-959,非压缩BCD码乘、除调整指令,(MUL r8/m8) AAM ;AX将AX的乘积调整为非压缩BCD码,AAD ;AX将AX中非压缩BCD码扩展成二进制数 (DIV r8/m8),AAM指令跟在字节乘MUL之后,将乘积调整为非压缩BCD码 AAD指令跟在字节除DIV之前,先将非压缩BCD码的被除数调整为二进

37、制数 AAM和AAD指令根据结果设置SF、ZF和PF,但对OF、CF和AF无定义,例题2.27c,例题2.27d,例2.27c:非压缩BCD乘,mov ax,0608h ;ax=0608h,非压缩BCD码表示真值68 mov bl,09h ;bl=09h,非压缩BCD码表示真值9 mul bl ;二进制乘法:al=08h09h=0048h aam ;十进制调整:ax=0702h ;实现非压缩BCD码乘法:8972,例2.27d:非压缩BCD除,mov ax,0608h ;ax=0608h,非压缩BCD码表示真值68 mov bl,09h ;bl=09h,非压缩BCD码表示真值9 aam ;二进

38、制扩展:ax=680044h div bl ;除法运算:商al=07h,余数ah=05h ;实现非压缩BCD码初法: 6897(余5),习题2.19(p72),设X、Y、Z、V均为16位带符号数,分别存放在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处?,X Y Z V,65 F3 02 00 24 E0 05 00,习题2.19:算术运算1,mov ax,X imul Y ;DX.AXXY mov cx,ax mov bx,dx ;BX.CXXY mov ax,Z cwd add cx,ax adc bx,dx ;BX.CXXYZ,习题2.19:算术运算2

39、,sub cx,540 sbb bx,0 ;BX.CXXYZ540 mov ax,V cwd sub ax,cx sbb dx,bx ;DX.AXV(XYZ540) idiv X ;DX.AX(V(XYZ540)X,第2章 教学要求(2),熟悉8086的基本参数、堆栈工作原理、指令对标志的影响、符号扩展的含义、压缩和非压缩BCD的格式 掌握基本指令:MOVXCHGXLAT、PUSHPOP、LEA;CLCSTCSTC、CLDSTD;ADDADCINC、SUBSBBDECCMPNEG、CBWCWD,第2章 教学要求(3),熟悉特色指令:INOUT ;CLISTI;MULIMUL、DIVIDIV、DAADAS、AAAAAS 了解不常使用的指令:LAHFSAHFPUSHFPOPF、LDSLES;AAMAAD; 习题2(p71) 2.152.18 2.20,IN AL,21H,OUT 43H,AL,课间休息,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1