




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章16位/32位微处理器指令系统、指令:要求计算机进行各种特定操作的指令。 指令系统:微机能够识别和执行的所有指令的集合。 微处理器对应的指令系统不同。3.1指令的基本格式、3.1.1指令的结构包括两部分:操作码:代表操作性质或类型的代码操作数:操作数。 通常,第1字节表示操作码,第2字节表示地址,第3、4字节表示操作数在存储器中的偏移量或即时数(如果指令中没有偏移量),第5、6字节表示即时数。3.1.28086/8088的指令格式,基本格式:标签:操作码助记符的操作数,源操作数注释标签:该命令所在的存储单元的符号地址后面跟冒号。 标签通常以字母开头,后跟字母、数字或特殊字符。 不能使用保
2、留语。 操作码助记:指示CPU执行什么操作。 操作数:分为目标操作数和源操作数两种。 目的操作数是存储指令结果的位置,源操作数是指令操作的对象。 注释:说明本指令或程序的功能,使程序易于阅读。 汇编程序不会处理这个。 3.2 8086/8088的地址方式、操作数的地址方式是搜索操作数位置的方式。 1 .即时地址、操作数包括在指令中,其中,该操作数可以是8位数值(00HFFH )或16位数值(0000HFFFFH) MOV AL,80H。 将80H送入AL MOV AX、306AH中。 将306AH送入AX的即时随机数地址方案经常用于对发送器或存储器单元指派值。 操作数是直接通过指令获取的,因此
3、不需要使用其他总线周期,执行时间短,速度快。 寄存器地址、操作数将CPU的内部寄存器: 8位寄存器: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器: AX、BX、CX、DX BL的内容传送到AL中的MOV BX、AX。 如果执行使用了将AX的内容向BX转送的寄存器地址的指令,则操作数在CPU中,无需访问内存来获得操作数,执行速度快。 另外,寄存器名比存储器地址短,指令所占的存储器容量少。 3 .直接地址,有效地址EA (Effective Address ) :操作数的偏移地址。 EA可以用不同的地址方式得到。 直接地址方式的有效地址直接给予指令。 默认的段基地址位于DS段寄存
4、器中,可以使用段前缀进行更改。 用方括号括住有效地址(例如,MOV AX,1000H )。 如果指定了有效地址作为符号地址,则不要加方括号。 MOV AX、BUFA; BUFA是符号地址,在这种情况下,段之间不带前缀,默认值保留为DS数据段。 MOV AX、ES:BUFA注意:如果BUFA变量位于附加段中,则在某些宏汇编器中,直接寻址的16位常量的有效地址必须加上段前缀。 否则,视为即时数。 例如,物理地址: 21000H、AX、已知: (DS)=2000H、(21000H)=12H、(21001H)=34H指令执行MOV AX、1000H后,尝试AX的内容。 数据段,2FFFFH,21000
5、H,21001H,12H,34H,存储器,命令执行后,(ax )=3440,4 .寄存器间地址,有效地址为基地址寄存器BX,BP或索引如果使用BX、SI或DI作为间隔剔除寄存器,则默认的段基地址位于DS段寄存器中。 在将BP用作稀疏寄存器时,默认的基于段的地址存在于SS段寄存器中。 可以使用段前缀进行更改。 MOV AX、BX; 如果(DS)=2000H、(BX)=1000H,则将段21000H、21001H这两个单元的内容发送到AX。 MOV CX、BP; 如果(SS)=4000H、(BP)=1000H,则将堆叠段41000H、41001H这两个单元的内容发送到CX。 MOV AX、ES:S
6、I; 如果(ES)=3000H、(SI)=1000H,则将追加段31000H、31001H这两个单元的内容发送到AX。 5 .寄存器可为BX、BP或SI、DI,其中基本地址和索引地址、有效地址是寄存器内容与带符号的8位或16位移位量的和。有效地址BX/BP/SI/DI8/16位移量寄存器是BX或BP,如果是基地址则寄存器是SI或DI,与索引地址段的基地址对应的BX/SI/DI寄存器默认为可以使用段前缀进行更改。 例如,实例,物理地址: 45000H,AX,已知: (DS)=4000H,(SI)=2000H,存储单元(45000H)=34H指令执行MOV AX,SI 3000H后,尝试AX的内容
7、。 40000H,数据段,4FFFFH,45000H,45001H,34H,12H,内存, 在执行指令后,(ax)=1220、6 .基地址索引、有效地址由在基地址寄存器(BX或BP )的内容上加上索引寄存器(SI或DI )的内容而构成此寻址方案适用于数组或表访问。 MOV AX、8BX SI; 默认操作数是数据段中的MOV BX,-6BP DI; 默认操作数为堆栈段的MOV BX,ES:BP DI; 操作数是附加段,7 .固定地址,固定地址也称为默认地址。 脚本不包含指定操作数地址的部分,该操作数本身隐式地指定了操作数地址。/10进制调整指令DAA是对AL寄存器的内容进行10进制调整,并将调整
8、后的内容保存到AL中的功能。 隐式寻址的指令无需校正EA,执行速度快且单字节指令多。3.3 8086/8088的指令系统、符号的约束: OPD :的操作数(8/16位) OPS :源操作数(8/16位)、3.3.1数据传送系指令、标志寄存器传送指令以外,标志位1 .通用数据传输命令,1) MOV传输命令,格式: MOV OPD,OPS MOV命令是被最多使用的命令,完成CPU中的寄存器之间的寄存器和存储器之间的数据传输,并且可将即时数字传输到寄存器和存储器。 MOV AL、BL; 将寄存器BL的内容传送给寄存器AL。 MOV DI、AX; 将寄存器AX的内容传送至DI和DI 1指向的存储字单元
9、。 MOV CX、1000H; 将数据段中的偏移地址1000H和1001H单元的内容发送到CX。 MOV BL、40; 将即时数40转发到寄存器BL .即时数、CS、IP不能用作所需的操作数。 不能在两个段寄存器之间相互传输数据。 不能在两个存储单元之间直接传输。 不能将即时数直接传送到段寄存器。 两个操作数的类型和长度必须一致。2) XCHG交换指令,格式: XCHG OPD,OPS操作数的类型可以是字节或字。 只能在通用寄存器间、通用寄存器和存储器间进行更换。 XCHG AX、BX; AX和BX的内容交换,3) XLAT代码转换指令,格式: XLAT或XLAT表头功能:将AL中的值转换为内
10、存表中的对应值。 这是隐式寻址方法的命令。 将数据发送到数据段内有效地址为(BX) (AL )的内存字节单元。 此命令可以将标头地址赋予BX,将请求的表内移位地址赋予AL,最后使用XLAT命令,将该地址的表值发送给AL。 功能图、XLAT代码转换指令的功能图、数据段、存储器、表格、BX、AL、BX AL、AL SS段寄存器记录其基于段的地址。 堆栈的访问操作全部由在堆栈顶部进行的堆栈指针寄存器SP指定。 堆栈命令PUSH,格式: PUSH OPS功能:修改指针: (SP)-2SP; 将OPS指定的寄存器、段寄存器或存储器的1个字的数据按入堆栈的最上方。 使用推式命令时请小心。 源操作数为16位
11、,不是8位。 源操作数不能立即计数。 例如,推送命令的例子,例如:命令执行前,(SP)=1000H; (AX)=1234H。 尝试推式ax命令的执行结果。SP,SP,SP,AX,12H,34H,堆栈指令POP,格式: POP OPD功能:将堆栈开头的字数据发送到OPD指定的寄存器,段寄存器(CS除外)的修改指针: (SP) 2SP。 使用时请注意POP命令。 目标操作数为16位,不是8位。 即时数,CS不能作为目标操作数。 例如,POP指令的示例:在执行指令前,尝试将(SP)=0FFEH、(BX)=2004H以及堆栈顶部(0FFEH )单元格内保存34H、(0FFFH的POP BX指令的执行结
12、果。 SP,SP,SP,BX,12H,34H,=1234H,2 .标志寄存器转送命令,LAHF命令:取得标志寄存器命令。 将标志寄存器FR的低位8位传送到AH。 SAHF指令:设置标志寄存器指令。 将AH的内容传送到标志寄存器FR的低位8位。 PUSHF指令:将标志寄存器FR的值按入堆栈。 POPF指令:从堆栈向标志寄存器FR弹出字。3 .目标地址转发指令、1 )偏移地址指令LEA、格式: LEA OPD、OPS功能:将源操作数的偏移地址发送到目标操作数。 此命令不影响标志位,源操作数必须是内存操作数,目标操作数必须是16位通用寄存器。 LEA SI、表格; TABLE是存储器操作数的符号地址
13、LEA AX,SI; 该命令与MOV AX、SI命令等价,与MOV AX、SI命令的效果不同,需要注意区别。 格式: LDS OPD、OPS功能:从源操作数指定的存储单元中取出某变量的地址指针(合并4字节),将行地址2字节(偏移量)发送到目标操作数,将高地址2字节(段开头地址此指令不影响标志位,源操作数必须是双字型内存操作数,目标操作数必须是16位通用寄存器。 2 )传输偏移地址和数据段起始地址命令LDS,例如LDS命令的示例,某双字存储器单元的偏移地址为3000H,双字数据为1234,5678 h,并且LDS SI和3000H命令的执行DS,SI,=1234H,=5678H,3 )转送偏移地
14、址和追加段开头地址指令LES,格式: LES OPD,OPS功能:从由源操作数指定的存储单元取出某变量的地址指针(),4 、1 )指令IN,格式: IN OPD,OPS功能:从端口(地址为n或DX )将位数据输入AL,或将16位数据输入AX。 IN AL、40H; 从40H端口读取1字节的AL IN AX,80H。 从80H端口读入1字节进给AL,从81H端口读入1字节进给AH MOV DX、8F00H。 将端口地址8F00H发送到DXIN AL和DX。 从8F00H端口输出1字节进给AL,2 )输出指令OUT,形式: OUT OPD,OPS功能:从AL输出8位数据,或从AX将16位数据输出到
15、端口(地址为n或DX中)。 OUT 40H、AL; 将AL内容传送到40H端口OUT 80H、AX。 将AL内容传送到80H端口,将AH内容传送到81H端口MOV DX、8F00H。 将端口地址8F00H发送到DXOUT DX,AL。 将AL内容发送到8F00H端口,使用输入输出命令时要注意,输入输出命令不要影响标志寄存器。 如果端口地址大于255,则必须在DX上指定端口地址。 3.3.2算术运算系统命令完成有符号和无符号的8位/16位二进制算术运算和BCD代码表示的十进制算术运算。 分:1 .加法指令,1 )无进位加法指令ADD,格式: ADD OPD,OPS功能: (OPS) (OPD)
16、OPD。 影响标志位CF、AF、PF、SF、OF、ZF。 带进位加法指令的ADC、格式: ADC OPD、OPS功能: (OPS) (OPD) CF OPD。 影响标志位CF、AF、PF、SF、OF、ZF。 ADC命令经常用于多字相加。3 )命令、格式: INC OPD功能:将目标操作数OPD的内容相加,将结果转移到目标操作数。 标志位影响AF、PF、SF、OF、ZF,但不影响CF标志。INC AX; 将内容加到AX中,并将结果发送回AX INC BL。 将内容加到BL中,并将结果发送回BL INC BYTE PTR SI。 将SI指向的内存字节单位的内容相加保存。 2 .减法指令,1 )无借位减法指令SUB,格式: SUB OPD,OPS功能: (OPD)-(OPS) OPD结果影响标志位CF,AF,PF,SF SUB BX,CX; 将从BX的内容中减去CX的内容后的结果放入BX,2 )带位减法命令SBB中,格式: SBB OPD,OPS功能: (OPD)-(OPS)-CFOPD结果影响标志位CF,AF,PF的SBB SI,AL; 从SI指示的字节单元的内容中减去AL的值,再减去CF,结果返回到原来的存储单元。3 )减法命令DEC,格式: DEC OPD功能:减去目标操作数OPD的内容,将结果转移到目标操作数。 标志位影响AF、PF、SF、OF、ZF,但不影响CF标志
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025个人借款合同模板
- 《2025全面土地使用权抵押合同范本》
- 2025《设备采购合同示范文本》之特点
- 2025中外服务行业合同参考格式
- 2025建筑分包合同的范本
- 2025年上海货车从业资格证答题题库
- 寒假生活400多字
- 函数30度45度60度函数值
- 2025年玉树驾校考试货运从业资格证模拟考试
- 2025年株洲货运驾驶员从业资格证考试题库答案
- 2024年苏州市轨道交通集团有限公司招聘笔试参考题库附带答案详解
- 新概念英语第2册课文(完整版)
- 水培吊兰的养殖方法要领
- 动物的迁徙行为与地球生态系统
- 总成修理工安全操作规程
- 【小学心理健康教育分析国内外文献综述4100字】
- 校园金话筒大赛(临沂赛区)策划书
- 正确使用文丘里面罩
- 破碎锤施工方案
- 2023年10月自考00161财务报表分析(一)试题及答案含评分标准
- 大学物理第8章-机械振动
评论
0/150
提交评论