第4章--基本指令系统与顺序结构程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章--基本指令系统与顺序结构程序设计课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 指令系统 顺序 结构 程序设计 课件
- 资源描述:
-
1、2023-5-131本章主要教学内容1.汇编语言的基本指令格式及应用;2.顺序结构程序的设计方法。本章主要教学目的及要求1.理解汇编语言的基本指令格式;2.掌握顺序结构程序的设计方法,能利用汇编语言基本指令熟练进行顺序结构程序设计。教学重点及难点:汇编语言基本指令的格式及应用。2023-5-132存储器内容传送到段寄存器(CS除外)例:MOV ESI,EDI MOV 2000H,CX MOV DS,BX 段寄存器内容送通用寄存器、存储器 格式:MOV DST,SRC 功能:将源操作数SRC的内容传送到目标操作数寄存器内容传至寄存器、存储器、段寄存器(CS除外)存储器内容传送至通用寄存器 例:M
2、OV BL,44 MOV DI,78H 4.1 基本指令系统4.1.1数据传送指令 功能:把数据、地址或立即数传送到寄存器或存储单元中 MOV指令 立即数传送至通用寄存器、存储单元例:MOV EAX,BX 例:MOV DS,2000H 例:MOV BX,ES MOV BX,ES1.通用传送指令2023-5-133寄存器之间交换寄存器和存储单元之间交换 格式:XCHG OPR1,OPR2 功能:完成OPR1操作数与OPR2操作数内容的交换 例:XCHG EAX,EDX 例:XCHG AL,SI XCHG指令2023-5-1342.堆栈操作 PUSH指令 指令POP指令 特点:堆栈是一个先进后出的
3、数据结构,SS记录其段地址,栈顶用SP 指定。栈顶地址较小(低端),栈底不变。格式:PUSH SRC/PUSHA/PUSHAD/PUSHF/PUSHFD功能:将源操作数内容压栈,同时自动修改栈顶指针 例:PUSH BX PUSH AX 格式:POP DST/POPA/POPAD/POPF/POPFD 功能:从堆栈弹出数据 例:POP DX POP ES 注意:出栈的顺序与入栈的顺序恰好相反2023-5-1353.地址传送指令功能:用来传送操作数的地址。LEA指令 指令类型格式:LEA REG,SRC功能:源操作数的有效地址(偏移地址)送指定寄存器注意:SRC是一个存储单元例:LEA AX,NU
4、MB LDS指令 格式:LDS REG,SRC功能:将SRC存储单元存放的4个字节送指定的寄存器REG和 DS,其中(SRC)REG,(SRC2)DS例:LDS DI,LIST LESLFSLGSLSS指令 格式:同LDS功能:将存储在SRC中的地址送REG寄存器和相应的段寄存器 2023-5-1364.标志位传送指令LAHF指令 标志位传送指令格式:LAHF功能:将标志寄存器的最右8位送AH寄存器SAHF指令 格式:SAHF功能:将AH内容送标志寄存器的最右8位5.输入输出指令实现CPU和I/O端口之间的通讯。2023-5-1376.其它数据传送指令XLAT 换码指令其它数据传送指令格式:X
5、LAT或XLAT OPR功能:将AL与BX内容之和为偏移地址的存储单元内容送入AL例:MOV AL,5 MOV BX,offsetK5 XLAT执行情况如下:结果为:AL=32AL=5K51248163264MOVSX 符号扩展指令格式:MOVSX OPR1,OPR2功能:将OPR2中的数据符号扩展后送至OPR1MOVZX 零扩展指令格式:MOVZX OPR1,OPR2功能:将OPR2中的数据零扩展后送至OPR1说明:(1)MOVSX和MOVZX中源操作数长度是目标操作数的一半。(2)MOVSX将目的操作数的高一半全部以源操作数的符号位填充。(3)零扩展指将目的操作数的高一半以0填充。BSWA
6、P指令格式:BSWAP reg32功能:将reg32寄存器第一字节和第四个字节交换,第二字 节和第三字节交换。2023-5-1384.1.2 算术运算指令常用标志位CF(进位标志)含义:最高位有进位或借位,则CF置“1”,否则置“0”AF(辅助进位标志)含义:低半字节有进位或借位,则AF置“1”否则置“0”SF(符号标志)含义:算术或逻辑运算结果为正,SF置“0”,为负则置“1“ZF(零标志)含义:算术或逻辑运算结果为0,ZF置“1”,否则置“0”PF(奇偶标志)含义:算术或逻辑操作结果的低8位含有偶数个“1”,则PF置“1”,否则置“0”OF(溢出标志)含义:若两个操作数的符号相同而结果的符
7、号与之相 反则OF置“1”,否则置“0”2023-5-139例:实现BX-AX和DX-CX相加,结果存放在BX-AX。SUM32 PROC NEAR ADD AX,CX ADC BX,DX RETSUM32 ENDP1.加法指令加法指令ADD格式:ADD DST,SRC功能:将源操作数和目标操作数相加,结果送入目标操作数例:求NUM和NUM+1单元内字节数据和的程序段。MOV DI,OFFSET NUM MOV AL,0 ADD AL,NUM ADD AL,NUM+1 例:ADD AL,BL ADD CL,44 ADD BX,ALADC格式:ADC DST,SRC功能:将源操作数、目标操作数和
8、CF的值相加送目标操作数例:ADC AL,AH ADC AX,BXINC格式:INC OPR功能:将除段寄存器以外任何存储器或存储单元内容加1例:INC BL INC WORD PTR BXXADD格式:XADD DST,SRC功能:将目标操作数和源操作数相加,和数放在目标操作数 中,原目标操作数内容送入源操作数例:XADD BL,DL2023-5-1310格式:CMPXCHG DST,SRC功能:将目标操作数和累加器内容比较,若相等则将源操作数复制 到目标操作数,否则将目标操作数复制到累加器相减后的差存在AL,标志位变化如下:ZF=0,CF=1,AF=1,SF=1,OF=0,PF=1格式:S
9、BB 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 sub ax,0f0f0h mov dx,0234h sbb dx,0f0f0h2.减法指令减法指令SUB格式:SUB DST,SRC功能:
10、从目标操作数中减去源操作数,结果存入目标操作数例:实现36H减去48H,分析标志位的变化情况。MOV AL,36H SUB AL,48H例:SUB DX,MATHSI SUB BPBALANCE,1000 SUB ECX,EBPSBB例:SBB AH,AL SBB DI,BP+2DEC格式:DEC OPR功能:将目标操作数减1例:DEC AL NEGCMP例:CMP BX,CX CMP BP+2,SI CMP AL,00010000BCMPXCHG例:CMPXCHG CX,DX 注意:该指令只用于80486/Pentium微处理器2023-5-1311乘法指令对标志的影响:MUL指令-若乘积的
11、高一半(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 bl3.乘法指令乘法指令 MUL格式:MUL SRC功能:将累加器(EAX,AX或AL)与源操作数作为无符号数相乘例:MUL CL MUL CX MUL ECX;AL乘CL,无符号的积存在AX中;AX乘C
12、X,无符号的积存在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位含有效数字2023-5-13124.除法指令除法指令 DIV格式:DIV SRC功能:将两个无符号数相除注意:SRC为8位,目标操作数AX,商AL中,余数AH;SRC为16位,目标操作数高位字DX,低位字AX,商
13、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 余数ah7ch124有符号 mov ax,0400h mov bl,0b4h idiv bl;商alf3h-13 余数ah24h362023-5-1313例:将存放在AL中的带符号数-87,除以CL中的带符号数21 CBW IDIV C
14、L格式:CWB功能:将(AL)的符号位扩充到AH中符号扩展指令概念:用一个操作数的符号位(即最高位)形成另一个操作数,后一 个操作数的各位是全0(正数)或全1(负数)注意:符号扩展不改变数据大小,不影响标志位指令类型 CBW CWD格式:CWD功能:将(AX)的符号位扩充到DX中 CDQ格式:CDQ功能:将(EAX)的符号位扩充到EDX-EAX中 执行CBW指令后,AX=1111 1111 1010 1001B=-87D 执行IDIV CL指令后,AL=-4D=1111 1100B AH=-3D=1111 1101B2023-5-1314例题:算术综合运算(V-(X*Y+Z-540)/X 其中
15、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 DX,BXADD CX,AX IDIV XADC BX,DX MOV W,AX2023-5-13154.1.3 十进制算术运算指令十进制数的表示:BCD码BCD码压缩BCD码 含义:四位二进制数表示一位十进制数非压缩BCD码 含义:八位二进制数表示一位十进制数例:对于3
16、7的表示 压缩BCD码为 37H 非压缩BCD码为 0307H十进制数的运算步骤:1.对BCD码进行二进制运算 2.用十进制调整指令进行调整2023-5-1316例:试完成压缩BCD码表示的17加18,结果放DL。MOV AL,17H ADD AL,18H DAA MOV DL,AL1.压缩的BCD码调整指令DAA格式:DAA指令功能:AF=1或AL低四位为A-F,则AL+06HAL,1AF CF=1或AL高四位为A-F,则AL+60HAL,1CF压缩的BCD码调整指令DAS格式:DAS指令功能:AF=1或AL低四位为A-F,则AL-06HAL,1AF CF=1或AL高四位为A-F,则AL-6
展开阅读全文