基本指令系统与顺序结构程序设计.ppt
《基本指令系统与顺序结构程序设计.ppt》由会员分享,可在线阅读,更多相关《基本指令系统与顺序结构程序设计.ppt(40页珍藏版)》请在三一办公上搜索。
1、2023/10/11,1,本章主要教学内容,1.汇编语言的基本指令格式及应用;2.顺序结构程序的设计方法。,本章主要教学目的及要求,1.理解汇编语言的基本指令格式;2.掌握顺序结构程序的设计方法,能利用汇编语言基本指令熟练进行顺序结构程序设计。,教学重点及难点:,汇编语言基本指令的格式及应用。,2023/10/11,2,存储器内容传送到段寄存器(CS除外),例:MOV ESI,EDI MOV 2000H,CX MOV DS,BX,段寄存器内容送通用寄存器、存储器,格式:MOV DST,SRC 功能:将源操作数SRC的内容传送到目标操作数,寄存器内容传至寄存器、存储器、段寄存器(CS除外),存储
2、器内容传送至通用寄存器,例:MOV BL,44 MOV DI,78H,4.1 基本指令系统,数据传送指令,功能:把数据、地址或立即数传送到寄存器或存储单元中,MOV指令,立即数传送至通用寄存器、存储单元,例:MOV EAX,BX,例:MOV DS,2000H,例:MOV BX,ES MOV BX,ES,1.通用传送指令,2023/10/11,3,寄存器之间交换,寄存器和存储单元之间交换,格式:XCHG OPR1,OPR2 功能:完成OPR1操作数与OPR2操作数内容的交换,例:XCHG EAX,EDX,例:XCHG AL,SI,XCHG指令,2023/10/11,4,2.堆栈操作,PUSH指令
3、,指令,POP指令,特点:堆栈是一个先进后出的数据结构,SS记录其段地址,栈顶用SP 指定。栈顶地址较小(低端),栈底不变。,格式:PUSH SRC/PUSHA/PUSHAD/PUSHF/PUSHFD功能:将源操作数内容压栈,同时自动修改栈顶指针,例:PUSH BX PUSH AX,格式:POP DST/POPA/POPAD/POPF/POPFD 功能:从堆栈弹出数据,例:POP DX POP ES,注意:出栈的顺序与入栈的顺序恰好相反,2023/10/11,5,3.地址传送指令,功能:用来传送操作数的地址。,LEA指令,指令类型,格式:LEA REG,SRC功能:源操作数的有效地址(偏移地址
4、)送指定寄存器,注意:SRC是一个存储单元,例:LEA AX,NUMB,LDS指令,格式:LDS REG,SRC功能:将SRC存储单元存放的4个字节送指定的寄存器REG和 DS,其中(SRC)REG,(SRC2)DS,例:LDS DI,LIST,LESLFSLGSLSS指令,格式:同LDS功能:将存储在SRC中的地址送REG寄存器和相应的段寄存器,2023/10/11,6,4.标志位传送指令,LAHF指令,标志位传送指令,格式:LAHF功能:将标志寄存器的最右8位送AH寄存器,SAHF指令,格式:SAHF功能:将AH内容送标志寄存器的最右8位,5.输入输出指令,实现CPU和I/O端口之间的通讯
5、。,2023/10/11,7,6.其它数据传送指令,XLAT 换码指令,其它数据传送指令,格式:XLAT或XLAT OPR功能:将AL与BX内容之和为偏移地址的存储单元内容送入AL,例:MOV AL,5 MOV BX,offsetK5 XLAT,MOVSX 符号扩展指令,格式:MOVSX OPR1,OPR2功能:将OPR2中的数据符号扩展后送至OPR1,MOVZX 零扩展指令,格式:MOVZX OPR1,OPR2功能:将OPR2中的数据零扩展后送至OPR1,说明:(1)MOVSX和MOVZX中源操作数长度是目标操作数的一半。(2)MOVSX将目的操作数的高一半全部以源操作数的符号位填充。(3)
6、零扩展指将目的操作数的高一半以0填充。,BSWAP指令,格式:BSWAP reg32功能:将reg32寄存器第一字节和第四个字节交换,第二字 节和第三字节交换。,2023/10/11,8,4.1.2 算术运算指令,常用标志位,CF(进位标志),含义:最高位有进位或借位,则CF置“1”,否则置“0”,AF(辅助进位标志),含义:低半字节有进位或借位,则AF置“1”否则置“0”,SF(符号标志),含义:算术或逻辑运算结果为正,SF置“0”,为负则置“1“,ZF(零标志),含义:算术或逻辑运算结果为0,ZF置“1”,否则置“0”,PF(奇偶标志),含义:算术或逻辑操作结果的低8位含有偶数个“1”,则
7、PF置“1”,否则置“0”,OF(溢出标志),含义:若两个操作数的符号相同而结果的符号与之相 反则OF置“1”,否则置“0”,2023/10/11,9,例:实现BX-AX和DX-CX相加,结果存放在BX-AX。SUM32 PROC NEAR ADD AX,CX ADC BX,DX RETSUM32 ENDP,1.加法指令,加法指令,ADD,格式:ADD DST,SRC功能:将源操作数和目标操作数相加,结果送入目标操作数,例:求NUM和NUM+1单元内字节数据和的程序段。MOV DI,OFFSET NUM MOV AL,0 ADD AL,NUM ADD AL,NUM+1,例:ADD AL,BL
8、ADD CL,44 ADD BX,AL,ADC,格式:ADC DST,SRC功能:将源操作数、目标操作数和CF的值相加送目标操作数,例:ADC AL,AH ADC AX,BX,INC,格式:INC OPR功能:将除段寄存器以外任何存储器或存储单元内容加1,例:INC BL INC WORD PTR BX,XADD,格式:XADD DST,SRC功能:将目标操作数和源操作数相加,和数放在目标操作数 中,原目标操作数内容送入源操作数,例:XADD BL,DL,2023/10/11,10,格式:CMPXCHG DST,SRC功能:将目标操作数和累加器内容比较,若相等则将源操作数复制 到目标操作数,否
9、则将目标操作数复制到累加器,相减后的差存在AL,标志位变化如下:ZF=0,CF=1,AF=1,SF=1,OF=0,PF=1,格式:SBB DST,SRC功能:从目标操作数中减去源操作数和CF,结果存入目标操作数,格式:CMP OPR1,OPR2功能:用目标操作数减去源操作数,根据结果设置标志位,执行结果:DX.AX 0234 4652H F0F0 F0F0H 1143 5562H,例:mov ax,0ff64h neg al;ax=ff9ch,OF=0、SF=1、ZF=0、PF=1、CF=1,格式:NEG OPR功能:使操作数按位求反再加1,结果送入目标操作数,例:mov ax,4652h s
10、ub ax,0f0f0h mov dx,0234h sbb dx,0f0f0h,2.减法指令,减法指令,SUB,格式:SUB DST,SRC功能:从目标操作数中减去源操作数,结果存入目标操作数,例:实现36H减去48H,分析标志位的变化情况。MOV AL,36H SUB AL,48H,例:SUB DX,MATHSI SUB BPBALANCE,1000 SUB ECX,EBP,SBB,例:SBB AH,AL SBB DI,BP+2,DEC,格式:DEC OPR功能:将目标操作数减1,例:DEC AL,NEG,CMP,例:CMP BX,CX CMP BP+2,SI CMP AL,00010000
11、B,CMPXCHG,例:CMPXCHG CX,DX,注意:该指令只用于80486/Pentium微处理器,2023/10/11,11,乘法指令对标志的影响:MUL指令-若乘积的高一半(AH或DX)为0,则OF=CF=0;否则OF=CF=1IMUL指令-若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1,对标志位AF、PF、ZF、SF无定义,乘法指令应用举例:无符号:mov al,0b4h mov bl,11h mul bl;,例:IMUL DH IMUL WORD PTR SI IMUL EDI,有符号:mov al,0b4h mov bl,11h Imul bl,3.乘法指令,乘
12、法指令,MUL,格式:MUL SRC功能:将累加器(EAX,AX或AL)与源操作数作为无符号数相乘,例:MUL CL MUL CX MUL ECX,;AL乘CL,无符号的积存在AX中,;AX乘CX,无符号的积存在DX-AX中,;EAX乘ECX,无符号的积存在EDX-EAX中,IMUL,格式:IMUL SRC功能:将累加器(EAX,AX或AL)与源操作数作为有符号数相乘,;AL乘DH,有符号的积存在AX中,;AX内容与SI寻址的存储单元中字内容相乘,结果送DX-AX,;EAX中内容与EDI中的带符号数相乘,结果送EDX-EAX,;OF=CF=1,AX高8位不为0,;OF=CF=1,AX高8位含有
13、效数字,2023/10/11,12,4.除法指令,除法指令,DIV,格式:DIV SRC功能:将两个无符号数相除,注意:SRC为8位,目标操作数AX,商AL中,余数AH;SRC为16位,目标操作数高位字DX,低位字AX,商AX,余数DX;SRC为32位,目的操作数高32位EDX,低32位EAX,例:DIV CL DIV CX DIV DWORD PTRSI,IDIV,格式:IDIV SRC功能:将两个有符号数相除,例:IDIV CL IDIV CX IDIV DWORD PTRSI,除法指令应用举例:无符号 mov ax,0400h mov bl,0b4h div bl,;商al05h5 余数
14、ah7ch124,有符号 mov ax,0400h mov bl,0b4h idiv bl,;商alf3h-13 余数ah24h36,2023/10/11,13,例:将存放在AL中的带符号数-87,除以CL中的带符号数21 CBW IDIV CL,格式:CWB功能:将(AL)的符号位扩充到AH中,符号扩展指令,概念:用一个操作数的符号位(即最高位)形成另一个操作数,后一 个操作数的各位是全0(正数)或全1(负数),注意:符号扩展不改变数据大小,不影响标志位,指令类型,CBW,CWD,格式:CWD功能:将(AX)的符号位扩充到DX中,CDQ,格式:CDQ功能:将(EAX)的符号位扩充到EDX-E
15、AX中,执行CBW指令后,AX=1111 1111 1010 1001B=-87D 执行IDIV CL指令后,AL=-4D=1111 1100B AH=-3D=1111 1101B,2023/10/11,14,例题:算术综合运算(V-(X*Y+Z-540)/X 其中X、Y、Z、V均为16位带符号数,已分别装入X、Y、Z、V单元中,要求上式计算结果,并把商存入W单元,余数存入W+2单元中。,MOV AX,X SUB CX,540 MOV W+2,DXIMUL Y SBB BX,0 MOV CX,AX MOV AX,VMOV BX,DX CWDMOV AX,Z SUB AX,CXCWD SBB D
16、X,BXADD CX,AX IDIV XADC BX,DX MOV W,AX,2023/10/11,15,4.1.3 十进制算术运算指令,十进制数的表示:BCD码,BCD码,压缩BCD码,含义:四位二进制数表示一位十进制数,非压缩BCD码,含义:八位二进制数表示一位十进制数,例:对于37的表示 压缩BCD码为 37H 非压缩BCD码为 0307H,十进制数的运算步骤:1.对BCD码进行二进制运算 2.用十进制调整指令进行调整,2023/10/11,16,例:试完成压缩BCD码表示的17加18,结果放DL。MOV AL,17H ADD AL,18H DAA MOV DL,AL,1.压缩的BCD码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 指令系统 顺序 结构 程序设计

链接地址:https://www.31ppt.com/p-6263527.html