汇编语言2-2.ppt
《汇编语言2-2.ppt》由会员分享,可在线阅读,更多相关《汇编语言2-2.ppt(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、教学提示全全面面而而准准确确地地理理解解每每条条指指令令的的功功能能和和应应用用,是是编编写写汇汇编编语言程序的关键语言程序的关键第 2 章2.3 数据传送类指令数数据据传传送送是是计计算算机机中中最最基基本本、最最重重要要的一种操作的一种操作传送指令也是最常使用的一类指令传送指令也是最常使用的一类指令传传送送指指令令把把数数据据从从一一个个位位置置传传送送到到另另一个位置一个位置除除标标志志寄寄存存器器传传送送指指令令外外,均均不不影影响响标志标志位位重点掌握重点掌握MOV XCHG XLAT PUSH POP LEA第 2 章2.3.1 通用数据传送指令提供方便灵活的通用传送操作提供方便灵
2、活的通用传送操作有有3条指令条指令MOVXCHGXLATMOVMOVXCHGXCHGXLATXLAT第 2 章传送指令MOV(move)把把一一个个字字节节或或字字的的操操作作数数从从源源地地址址传传送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存立即数送寄存器或主存MOVMOV例题例题2.1MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存寄存器送(段)寄存器或主存例题例题2.2MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器主存送(段)寄存器例题例
3、题2.3MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存段寄存器送寄存器或主存例题例题2.5第 2 章MOV指令传送功能MOV也并非任意传送也并非任意传送立即数立即数段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器第 2 章非法传送种种两个操作数的类型不一致两个操作数的类型不一致n例例如如源源操操作作数数是是字字节节,而而目目的的操操作作数是字;或相反数是字;或相反两个操作数不能都是存储器两个操作数不能都是存储器n传传送送指指令
4、令很很灵灵活活,但但主主存存之之间间的的直直接传送却不允许接传送却不允许段寄存器的操作有一些限制段寄存器的操作有一些限制n段段寄寄存存器器属属专专用用寄寄存存器器,对对他他们们的的操作能力有限操作能力有限示例示例示例示例示例示例示例示例示例示例示例示例第 2 章交换指令XCHG(exchange)把两个地方的数据进行互换把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与寄存器之间对换数据寄存器与存储器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHGXCHGXCHG reg,reg/memXCHG reg,reg/mem;re
5、g reg reg/memreg/mem例题例题2.7例题例题2.6第 2 章换码指令执行前:换码指令执行前:在主存建立一个在主存建立一个字节量表格字节量表格,内含要转换成的目的代码,内含要转换成的目的代码表格首地址表格首地址存放于存放于BXBX,ALAL存放相对表格首地址的存放相对表格首地址的位移量位移量换码指令执行后:换码指令执行后:将将ALAL寄存器的内容转换为寄存器的内容转换为目标代码目标代码换码指令XLAT(translate)将将BX指指定定的的缓缓冲冲区区中中、AL指指定定的的位位移移处的一个字节数据取出赋给处的一个字节数据取出赋给ALXLATXLATXLATXLAT;alds:
6、bx+alalds:bx+al例题例题2.82.3.2 堆栈操作指令堆堆栈栈是是一一个个“后后进进先先出出FILOFILO”(或或说说“先先进进后后出出FILO”FILO”)的的主主存存区区域域,位位于于堆堆栈栈段段中中;SSSS段段寄寄存器存器记录其段地址记录其段地址堆堆栈栈只只有有一一个个出出口口,即即当当前前栈栈顶顶;用用堆堆栈栈指指针针寄存器寄存器SPSP指定指定栈栈顶顶是是地地址址较较小小的的一一端端(低端),栈底不变(低端),栈底不变第 2 章第 2 章堆栈的操作堆堆栈栈只只有有两两种种基基本本操操作作:进进栈栈和和出出栈,对应两条指令栈,对应两条指令PUSH和和POPPUSHPU
7、SH;进栈指令先使进栈指令先使堆栈指针堆栈指针SPSP减减2 2,然后把一个字操然后把一个字操作数存入堆栈顶作数存入堆栈顶部部POPPOP;出栈指令把栈顶出栈指令把栈顶的一个字传送至指的一个字传送至指定的目的操作数,定的目的操作数,然后堆栈指针然后堆栈指针SPSP加加2 2第 2 章进栈指令PUSHpush axpush axpush 2000hpush 2000hPUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/segPUSHPUSH第 2 章出栈指令POPpop axpop axpop 200
8、0hpop 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2POPPOP第 2 章堆栈的特点堆栈操作的单位是字,进栈和出栈只对字量堆栈操作的单位是字,进栈和出栈只对字量字字量量数数据据从从栈栈顶顶压压入入和和弹弹出出时时,都都是是低低地地址址字节送低字节,高地址字节送高字节字节送低字节,高地址字节送高字节堆堆栈栈操操作作遵遵循循先先进进后后出出原原则则,但但可可用用存存储储器器寻址方式随机存取堆栈中的数据寻址方式随机存取堆栈中的数据堆栈常用来堆栈常用来n临时存放数据临时存放数据n传递
9、参数传递参数n保存和恢复寄存器保存和恢复寄存器例题例题2.11第 2 章2.3.3 标志寄存器传送指令标标志志寄寄存存器器传传送送指指令令用用来来传传送送标标志志寄寄存存器器FLAGS的的内内容容,方方便便进进行行对各个标志位的直接操作对各个标志位的直接操作有有2对对4条指令条指令n低低8位传送:位传送:LAHF和和SAHFn16位传送:位传送:PUSHF和和POPF标志低字节进出AH指令LAHFLAHF;AHFLAGSAHFLAGS的低字节的低字节LAHFLAHF指指令令将将标标志志寄寄存存器器的低字节送寄存器的低字节送寄存器AHAHSF/ZF/AF/PF/CFSF/ZF/AF/PF/CF状
10、状态态标标志志位位分分别别送送入入AHAH的的第第7/6/4/2/07/6/4/2/0位位,而而 AHAH的的第第5/3/15/3/1位任意位任意SAHFSAHF;FLAGSFLAGS的低字节的低字节AHAHSAHFSAHF将将AHAH寄寄存存器器内内容容送送FLAGSFLAGS的低字节的低字节用用AHAH的的第第7/6/4/2/07/6/4/2/0位位相相 应应 设设 置置 SF/ZF/AF/SF/ZF/AF/PF/CFPF/CF标志标志第 2 章标志寄存器进出堆栈指令PUSHFPUSHF;SPSPSPSP2 2;SS:SPFLAGSSS:SPFLAGSPUSHFPUSHF指指令令将将标标志
11、志寄寄存存器器的的内内容容压压入入堆堆栈栈,同时栈顶指针同时栈顶指针SPSP减减2 2POPFPOPF;FLAGSSS:SPFLAGSSS:SP;SPSPSPSP2 2POPFPOPF指指令令将将栈栈顶顶字字单单元元内内容容送送标标志志寄寄存存器器,同同时栈顶指针时栈顶指针SPSP加加2 2例题例题2.12第 2 章第 2 章2.3.4 地址传送指令地地址址传传送送指指令令将将存存储储器器单单元元的的逻逻辑辑地址送至指定的寄存器地址送至指定的寄存器n有效地址传送指令有效地址传送指令 LEAn指针传送指令指针传送指令 LDS和和LES注意不是获取存储器单元的内容注意不是获取存储器单元的内容第 2
12、 章有效地址传送指令LEA(load EA)将将存存储储器器操操作作数数的的有有效效地地址址传传送至指定的送至指定的16位寄存器中位寄存器中例题例题2.13LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEALEALEA指针传送指令LDS r16,memLDS r16,mem;r16memr16mem,;DSmem+2DSmem+2LDSLDS指指令令将将主主存存中中memmem指指定定的的字字送送至至r16r16,并并将将memmem的的下下一一字字送送DSDS寄存器寄存器LES r16,memLES r16,mem;r16memr16mem,;
13、ESmem+2ESmem+2LESLES指指令令将将主主存存中中memmem指指定定的的字字送送至至r16r16,并并将将memmem的的下下一一字字送送ESES寄存器寄存器例题例题2.14第 2 章第 2 章2.3.5 输入输出指令8086通通过过输输入入输输出出指指令令与与外外设设进进行行数数据据交交换换;呈呈现现给给程程序序员员的的外外设设是是端端口口(Port)即即I/O地址地址8086用用于于寻寻址址外外设设端端口口的的地地址址线线为为16条条,端端口口最最多多为为21665536(64K)个个,端口号为,端口号为0000HFFFFH每每个个端端口口用用于于传传送送一一个个字字节节的
14、的外外设设数数据据第 2 章输入输出寻址方式8086的的端端口口有有64K个个,无无需需分分段段,设计有两种寻址方式设计有两种寻址方式v直直接接寻寻址址:只只用用于于寻寻址址00HFFH前前256个端口,操作数个端口,操作数i8表示端口号表示端口号v间间接接寻寻址址:可可用用于于寻寻址址全全部部64K个个端端口口,DX寄存器的值就是端口号寄存器的值就是端口号对对大大于于FFH的的端端口口只只能能采采用用间间接接寻寻址方式址方式第 2 章输入指令IN将外设数据传送给将外设数据传送给CPU内的内的AL/AXIN AL,i8IN AL,i8;字节输入:字节输入:ALI/OALI/O端口(端口(i8i
15、8直接寻址)直接寻址)IN AL,DXIN AL,DX;字节输入:字节输入:ALI/OALI/O端口(端口(DXDX间接寻址)间接寻址)IN AX,i8IN AX,i8;字输入:字输入:AXI/OAXI/O端口(端口(i8i8直接寻址)直接寻址)IN AX,DXIN AX,DX;字输入:字输入:AXI/OAXI/O端口(端口(DXDX间接寻址)间接寻址)ININ例题例题2.15演示演示演示演示第 2 章输出指令OUT将将CPU内的内的AL/AX数据传送给外设数据传送给外设OUT i8,ALOUT i8,AL;字节输出:字节输出:I/OI/O端口端口ALAL(i8i8直接寻址)直接寻址)OUT
16、DX,ALOUT DX,AL;字节输出:字节输出:I/OI/O端口端口ALAL(DXDX间接寻址)间接寻址)OUT i8,AXOUT i8,AX;字输出:字输出:I/OI/O端口端口AXAX(i8i8直接寻址)直接寻址)OUT DX,AXOUT DX,AX;字输出:字输出:I/OI/O端口端口AXAX(DXDX间接寻址)间接寻址)OUTOUT例题例题2.16演示演示演示演示第 2 章2.4 算术运算类指令四四则则运运算算是是计计算算机机经经常常进进行行的的一一种种操操作作。算算术术运运算算指指令令实实现现二二进进制制(和和十十进制)数据的四则运算进制)数据的四则运算请注意算术运算类指令请注意算
17、术运算类指令对标志的影响对标志的影响n掌掌握握:ADD/ADC/INC、SUB/SBB/DEC/NEG/CMPn熟悉:熟悉:MUL/IMUL、DIV/IDIVn理理解解:CBW/CWD、DAA/DAS、AAA/AAS/AAM/AAD第 2 章加法指令ADDADD指指令令将将源源与与目目的的操操作作数数相相加加,结结果送到目的操作数果送到目的操作数ADD指令按状态标志的定义相应设置指令按状态标志的定义相应设置ADDADDADD reg,imm/reg/memADD reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memADD mem,imm/regA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言
限制150内