南京邮电大学微型计算机原理与接口技术 3_01章_第1页
南京邮电大学微型计算机原理与接口技术 3_01章_第2页
南京邮电大学微型计算机原理与接口技术 3_01章_第3页
南京邮电大学微型计算机原理与接口技术 3_01章_第4页
南京邮电大学微型计算机原理与接口技术 3_01章_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编语言程序设计汇编语言程序设计Ch. 3 指令系统指令系统3.4 80486的基本指令集的基本指令集(一一)3.4 80486的基本指令集的基本指令集(二二)3.4.1 传送类指令传送类指令3.4.2 算术运算类指令算术运算类指令3.4.3 转移和调用类指令转移和调用类指令3.4.4 逻辑运算和移位指令逻辑运算和移位指令3.4.5 串操作指令串操作指令3.4.6 处理机控制指令处理机控制指令3.2 80486寻址方式寻址方式第第3 3章章 指令系统指令系统3.4 804863.4 80486基本指令集基本指令集 8048680486指令系统可以分为指令系统可以分为7 7类,它们是类,它们是:

2、 :数据传输类、数据传输类、算术运算类、逻辑运算类、串操作类、控制传输类、算术运算类、逻辑运算类、串操作类、控制传输类、处理器控制类和系统类。我们仅介绍前处理器控制类和系统类。我们仅介绍前6 6类。类。 在学习指令系统时,我们应当注意的基本信息为:在学习指令系统时,我们应当注意的基本信息为: 指令的功能;指令的功能; 操作数据的来源;操作数据的来源; 操作的结果及对标志寄存器的影响;操作的结果及对标志寄存器的影响; 下一条指令的地址。下一条指令的地址。3.4.0 部分指令部分指令(1)MOV 传送数据传送数据 句句 法:法: MOVdest,src操操 作:作: dest src标志影响:标志

3、影响: 无无合法格式:合法格式: 说明:说明:reg: 通用寄存器之一通用寄存器之一 idata:立即数:立即数 sreg:段寄存器之一:段寄存器之一 mem:存储器操作数:存储器操作数 dest:目:目 src: 源源 dest src MOV reg , idata MOV mem , idata MOV reg , reg MOV reg , mem MOV mem , reg MOV sreg , reg MOV sreg , mem MOV reg , sreg MOV mem , sreg 为了理解存储器变量的使用为了理解存储器变量的使用, ,请仔细阅读以下例题。请仔细阅读以下例题

4、。 【例】阅读以下程序【例】阅读以下程序, ,写出指令执行后的目标操作数。写出指令执行后的目标操作数。 设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代码段代码段:MOV AL,BNUM ;AL=? AL=12H 数据段经过汇编之后,并在操作系统的安排之下:设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654

5、321HFNUM DF 112233445566H BNUM:12H34H56H78H90HLHBX=3344H 数据段经过汇编之后,并在操作系统的安排之下:数据段经过汇编之后,并在操作系统的安排之下: 代码段代码段:MOV BX,WNUM+2 ;BX=? 设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHWNUM:22H11H44H33H66H55HEDX=87654321H 代码段代码段:MOV EDX,DNUM+4

6、;EDX=? 数据段经过汇编之后,并在操作系统的安排之下:数据段经过汇编之后,并在操作系统的安排之下:设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHDNUM:68H24H57H13H21H43H65H87HCL=68H 代码段代码段:MOV CL,BYTE PTR DNUM ;CL=? 数据段经过汇编之后,并在操作系统的安排之下:数据段经过汇编之后,并在操作系统的安排之下:设数据段设数据段:BNUM DB 12H,34

7、H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHDNUM:68H24H57H13HBX=5634H 代码段代码段:MOV BX,WORD PTR BNUM +1 ;BX=? 数据段经过汇编之后,并在操作系统的安排之下:数据段经过汇编之后,并在操作系统的安排之下:设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 11223344

8、5566H LHBNUM:12H34H56H78H90HEAX=66334411H 代码段代码段:MOV EAX,DWORD PTR WNUM +1 ;EAX=? 数据段经过汇编之后,并在操作系统的安排之下:数据段经过汇编之后,并在操作系统的安排之下:设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHWNUM:22H11H44H33H66H55HDH=90H 代码段代码段:MOV DH,BYTE PTR BNUM2*2 ;

9、DH=? 数据段经过汇编之后,并在操作系统的安排之下:数据段经过汇编之后,并在操作系统的安排之下:设数据段设数据段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H LHBNUM:12H34H56H78H90H 数据段经过汇编之后,并在操作系统的安排之下:数据段经过汇编之后,并在操作系统的安排之下: 代码段代码段: MOV BX,OFFSET BNUM MOV AL, BX ;AL=? 设数据段设数据段: ORG 2400h BNUM DB 1

10、2H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H AL=12HLHBNUM:12H34H56H78H90HBX=2400H 代码段代码段:MOV EBX, DNUM 3 ;EBX=? MOV BX, WORD PTR DNUM 3 ;BX=? MOV EBX, DWORD PTR BNUM 0 ;EBX=? MOV BX, WORD PTR FNUM ;BX=? MOV BX, 3 MOV BL,BNUM BX ;BL=? 设数据段设数据段:BNUM DB 12

11、H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 练习练习 (2) ADD 加法指令加法指令 句句 法:法:ADD dest src 操操 作:作:dest dest + src 标标 志:志:O,S,Z,A,P,C 合法格式:合法格式: dest src reg idata mem idata ADD reg reg reg mem mem reg(3) ADC 带进位加带进位加 句句 法:法:ADC dest src 操操 作:作:dest src + des

12、t + C 标标 志:志:O,S,Z,A,P,C 合法格式:合法格式: 同同ADD例:实现下列多字节数运算(以例:实现下列多字节数运算(以232为模)为模)5 6 7 8 8 7 8 5 H+ 7 8 9 A 8 7 8 5 H设数据段:设数据段:FIRST DD 56788785HSECOND DD 789A8785HSUM DD ?0F031FCHAFIRSTSECOND85H87H78H56H85H87H9AH78H SUMFIRSTSECOND85H87H78H56H85H87H9AH78H SUM解1:单字节加法(共需12条指令)MOV AL , BYTE PTR FIRSTADD

13、AL , BYTE PTR SECOND ;进位;进位C标标MOV BYTE PTR SUM , AL ;不影响;不影响C标标MOV AL , BYTE PTR FIRST+1 ;不影响;不影响C标标ADC AL , BYTE PTR SECOND+1 ;进位;进位C标标MOV BYTE PTR SUM+1 , ALFIRST DD 56788785HSECOND DD 789A8785HSUM DD ?0AH0FH13HCFH解解2:双字节加法(只需:双字节加法(只需6条指令)条指令)FIRST DD 56788785HSECOND DD 789A8785HSUM DD ?MOV AX ,

14、WORD PTR FIRSTADD AX , WORD PTR SECONDMOV WORD PTR SUM , AXMOV AX , WORD PTR FIRST+2ADC AX , WORD PTR SECOND+2MOV WORD PTR SUM+2 , AXFIRSTSECOND85H87H78H56H85H87H9AH78H SUM13HCFH0AH0FH解解3:双字加法(只需:双字加法(只需3条指令)条指令)FIRST DD 56788785HSECOND DD 789A8785HSUM DD ?MOV EAX , FIRSTADD EAX , SECONDMOV SUM , EA

15、X 66+99=1011011=91 6699=+01011011=+91结果都是错的被运算器丢失,保存在进位标志寄存器中 被运算器丢失,保存在进位标志寄存器中 66+99补=0 0 10100101-66-99补=1 1 01011011-66补= 10111110-99补= 10011101例2以28为模,补码运算, 求66+99, 6699 解:66补= 01000010 99补= 01100011回忆回忆 如果参与运算的数是无符号数,则判进位标志, 进位标志=1,表示溢出; 如果参与运算的数是有符号数,则判溢出标志,溢出标志=1,表示溢出。 程序员如何判断溢出程序员如何判断溢出回忆回忆

16、(4 4)条件转移)条件转移 . . 按标志位的当前状态转移按标志位的当前状态转移 设转移地址标号为设转移地址标号为XYZXYZJC XYZ ;JC XYZ ;当前当前C C标志为标志为1 1转转JNC XYZ ;JNC XYZ ;当前当前C C标志为标志为0 0转转JZ XYZ ;JZ XYZ ;当前当前Z Z标志为标志为1 1转转JNZ XYZ ;JNZ XYZ ;当前当前Z Z标志为标志为0 0转转JS XYZ ;JS XYZ ;当前当前S S标志为标志为1 1转转JNS XYZ ;JNS XYZ ;当前当前S S标志为标志为0 0转转JP XYZ ;JP XYZ ;当前当前P P标志为

17、标志为1 1转转JNP XYZ ;JNP XYZ ;当前当前P P标志为标志为0 0转转JO XYZ ;JO XYZ ;当前当前O O标志为标志为1 1转转JNO XYZ ;JNO XYZ ;当前当前O O标志为标志为0 0转转例例 设计程序判断设计程序判断 X+Y 是否溢出?若溢出则显示是否溢出?若溢出则显示“OVER!”;若正常则显示;若正常则显示“GOOD!” 解:若 X、Y为无符号数,则程序如下: MOV AL,X MOV BL,Y ADD AL,BL JC CCCC 显示显示“GOOD!”,结束,结束CCCC:显示:显示“OVER!”,结束,结束 解:若 X、Y为有符号数,则程序如下

18、: MOV AL,X MOV BL,Y ADD AL,BL JO CCCC 显示显示“GOOD!”,结束,结束CCCC:显示:显示“OVER!”,结束,结束3.4.1 数据传输类指令数据传输类指令1 通用类通用类(1)MOV 传送数据传送数据 句句 法:法: MOVdest,src操操 作:作: dest src标志影响:标志影响: 无无合法格式:合法格式: 说明:说明:reg: 通用寄存器之一通用寄存器之一 idata:立即数:立即数 sreg:段寄存器之一:段寄存器之一 mem:存储器操作数:存储器操作数 dest:目:目 src: 源源 dest src MOV reg , idata

19、MOV mem , idata MOV reg , reg MOV reg , mem MOV mem , reg MOV sreg , reg MOV sreg , mem MOV reg , sreg MOV mem , sreg (2)MOVSX 符号扩展的传送符号扩展的传送 句句 法:法:MOVSX dest ,src 操操 作:作:dest(16,32) sign extend(8,16)()(src) 标志影响:无标志影响:无 合法格式:合法格式: dest src MOVSX reg , reg MOVSX reg , mem(3)MOVZX 带有零扩展的传送 句 法: MOVZ

20、X dest ,src 操 作:dest 0_extend(src) 标志影响:无 合法格式:dest,src 同(2) (4)LEA 取有效地址 句 法: LEA dest ,src 操 作: dest address(src) 标志影响: 无 合法格式: dest src LEA reg , mem(5)Lseg 调用段寄存器调用段寄存器 句句 法:法:Lseg dest ,src 操操 作:作:dest (src) seg (src+4) 标志影响:无标志影响:无 合法格式:合法格式: dest src LDS LES LFS reg32 , mem LGS LSS(5)Lseg 调用段

21、寄存器调用段寄存器 句句 法:法:Lseg dest ,src 操操 作:作:dest (src) seg (src+2) 标志影响:无标志影响:无 合法格式:合法格式: dest src LDS LES LFS reg16 , mem LGS LSS(6)标志寄存器传送指令)标志寄存器传送指令 LAHF 把标志装入把标志装入AH句句 法:法:LAHF操操 作:作:AHEFAGSOFFH标志影响:无标志影响:无合法格式:合法格式:LAHF SAHF 把把AH内容送到内容送到EFLAGS中中 句句 法:法:SAHF操操 作:作:EFLAGS(EFLAGS 0FFFFFF00H) (AH)0D5H

22、)标标 志:志:S,A,Z,P,C合法格式:合法格式:SAFH D31 D19 D18 D7 D0AC VM RNT IOPL ODITSZAPC(7) XCHG 交换交换 句句 法:法:XCHG OP1,OP2操操 作:作:temp OP1 OP1 OP2 OP2 temp标志影响:无标志影响:无 合法格式:合法格式: OP1 OP2 reg, reg XCHG reg, mem mem, reg(8)BSWAP 字节交换字节交换 句句 法:法:BSWAP dest 操操 作:作:temp dest dest(0-7) temp(24-31) dest(8-15) temp(16-23) d

23、est(16-23) temp(8-15) dest(24-31) temp(0-7) 标志影响:无标志影响:无 合法格式:合法格式: dest BSWAP reg32 本指令对不同结构的处理器之间的数据交换能发挥作用。本指令对不同结构的处理器之间的数据交换能发挥作用。 (9)XLAT 字节转换 句 法:XLAT 操 作:AL DS:EBX+AL 标 志:无 合法格式:XLAT例:查找NUM单元中的数所对应的数码管字型码。adbghcfeabhabh设设D7D0位依次驱动位依次驱动ha段(共阴),则有:段(共阴),则有:的字型码为:的字型码为:0 0 1 1 1 1 1 1 = 3FH的字型码

24、为:的字型码为:0 0 1 1 1 0 0 1 = 39H的字型码为:的字型码为:0 1 1 1 1 0 0 1 = 79H的字型码为:的字型码为:0 1 1 1 0 0 0 1 = 71H的字型码为:的字型码为:0 1 1 1 1 1 1 1 = 7FH的字型码为:的字型码为:0 1 1 0 1 1 1 1 = 6FH的字型码为:的字型码为:0 1 1 1 0 1 1 1 = 77H的字型码为:的字型码为:0 1 1 1 1 1 0 0 = 7CH的字型码为:的字型码为:0 1 0 1 1 1 1 0 = 5EH的字型码为:的字型码为:0 0 0 0 0 1 1 0 = 06H的字型码为:的

25、字型码为:0 1 0 1 1 0 1 1 = 5BH的字型码为:的字型码为:0 1 1 0 0 1 1 0 = 66H的字型码为:的字型码为:0 1 0 0 1 1 1 1 = 4FH的字型码为:的字型码为:0 1 1 1 1 1 0 1 = 7DH的字型码为:的字型码为:0 1 1 0 1 1 0 1 = 6DH的字型码为:的字型码为:0 0 0 0 0 1 1 1 = 07Hadbghcfe解:编程时,按解:编程时,按09、AF的次序,将相应的字型的次序,将相应的字型码设置在数据段中:码设置在数据段中:TAB DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07

26、H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71HNUM DB ;015中的一个数中的一个数数据段:数据段:代码段:代码段:MOV BX , OFFSET TABMOV AL , NUMXLAT ;AL=相应的字型码相应的字型码 代码段:代码段:TAB DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71HNUM DB ;015中的一个数中的一个数MOV BX , OFFSET TABMOV AL , NUMXLAT TAB ;AL=相应的字型码相应的字型码33 2.堆栈指令堆栈指令 概念概念栈体(SS)22H1FFFFH1FFFEH1FFFDH1FFFCH1FFFBH22H33H栈指针SP栈顶栈底XX10000H1FFFFH1FFFEH1FFFDH1FFFCH1FFFBHSSSP22H33HSPXX10000H1FFFFH1FFFEH1FFFDH1FFFCH1FFFBHSSSP22H33H压栈过程压栈过程退栈过程退栈过程SP(1) PUSH 压栈 句 法:PUSH OP 操 作: if (size of(OP)=16) then SP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论