




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第2 2章章第2章什么是指令系统计算机的指令系统就是指该计算机计算机的指令系统就是指该计算机能够执行的全部指令的集合能够执行的全部指令的集合教学重点重点掌握常用指令功能及应用重点掌握常用指令功能及应用数据传送指令数据传送指令算术运算指令算术运算指令逻辑运算和移位指令逻辑运算和移位指令字符(串)输入输出功能调用字符(串)输入输出功能调用控制转移指令控制转移指令处理器控制指令处理器控制指令第2章汇编语言指令格式由由4 4部分组成:部分组成:标号标号: :指令助记符指令助记符 目的操作数目的操作数, ,源操作数源操作数 ;注释;注释第2章2.1 数据传送类指令 传送指令把数据从一个位置传传送指令把
2、数据从一个位置传送到另一个位置送到另一个位置除标志寄存器传送指令外,均除标志寄存器传送指令外,均不不影响标志位影响标志位重点掌握重点掌握MOV XCHG XLAT PUSH POP LEA第2章2.1.1 通用数据传送指令提供方便灵活的通用传送操作提供方便灵活的通用传送操作有有3条指令条指令MOVXCHGXLAT第2章1. 传送指令MOV(move)把一个字节或字的操作数从源地址传把一个字节或字的操作数从源地址传送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存;立即数送寄存器或主存立即数传送立即数传送mov al,4mov al,4;a
3、l4al4,字节传送,字节传送mov cx,mov cx,0 0ffhffh;cx00ffhcx00ffh,字传送,字传送mov si,200hmov si,200h;si0200hsi0200h,字传送,字传送第2章两个操作数的类型要一致MOV AL,050AH MOV AL,050AH ;非法指令;非法指令 对于存储器单元与立即数同时作为操作数对于存储器单元与立即数同时作为操作数的情况,必须显式指明;的情况,必须显式指明;byte ptrbyte ptr指示字节类指示字节类型,型,word ptrword ptr指示字类型指示字类型mov mov byte ptrbyte ptr si,
4、si,0ah0ah;byte ptr byte ptr 说明是字节操作说明是字节操作mov mov word ptrword ptr si+2, si+2,0bh0bh;word ptr word ptr 说明是字操作说明是字操作 第2章1. 传送指令MOV把一个字节或字的操作数从源地址传把一个字节或字的操作数从源地址传送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存;立即数送寄存器或主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存寄存器传送寄存器传
5、送mov ax,bxmov ax,bx;axbxaxbx,字传送,字传送mov ah,almov ah,al;ahalahal,字节传送,字节传送mov ds,axmov ds,ax;dsaxdsax,字传送,字传送mov bx,almov bx,al;bxalbxal,字节传送,字节传送第2章1. 传送指令MOV把一个字节或字的操作数从源地址传把一个字节或字的操作数从源地址传送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存;立即数送寄存器或主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)
6、寄存器或主存;寄存器送(段)寄存器或主存MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器存储器传送存储器传送mov al,bxmov al,bxmov dx,bpmov dx,bp;dxss:bpdxss:bpmov es,simov es,si;esds:siesds:si 不存在存储器向存储器的传送指令不存在存储器向存储器的传送指令第2章两个操作数不能都是存储器80868086指令系统不允许两个操作数都是指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现种传送,可通
7、过寄存器间接实现mov ax,buffer1mov ax,buffer1;axbuffer1axbuffer1(将(将buffer1buffer1内容送内容送axax)mov buffer2,axmov buffer2,ax;buffer2axbuffer2ax;这里;这里buffer1buffer1和和buffer2buffer2是两个字变量是两个字变量;实际表示直接寻址方式;实际表示直接寻址方式第2章1. 传送指令MOV把一个字节或字的操作数从源地址传把一个字节或字的操作数从源地址传送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存;
8、立即数送寄存器或主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存段寄存器传送段寄存器传送mov si,dsmov si,dsmov ax,esmov ax,es;axesaxesmov ds,axmov ds,ax;dsaxesdsaxes 对段寄存器的操作有一些限制对段寄存器的操作有一些限制第2章要小
9、心段寄存器的操作不允许立即数传送给段寄存器不允许立即数传送给段寄存器MOV DS,100H不允许直接改变不允许直接改变CS值值MOV CS,SI不允许段寄存器之间的直接数据传送不允许段寄存器之间的直接数据传送MOV DS,ES第2章MOV指令传送功能立即数立即数段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器第2章例题请分别用一条指令实现如下要求:请分别用一条指令实现如下要求:将寄存器将寄存器BX的内容赋给的内容赋给CX寄存器寄存器将立即数将立即数238H传送给传
10、送给DX寄存器寄存器将数据段偏移地址为将数据段偏移地址为30H的存储器中的的存储器中的数据提供给数据提供给AX寄存器寄存器将将DL寄存器内容传送给由寄存器内容传送给由SI寄存器指定寄存器指定的数据段偏移地址的存储单元的数据段偏移地址的存储单元将字节量数据将字节量数据80H送入用送入用BX和和DI的基址的基址变址寻址的主存单元。变址寻址的主存单元。第2章例题指出如下各条指令的错误原因,并指出如下各条指令的错误原因,并按照原意修改正确:按照原意修改正确:mov dl,2345hmov ds,2345h mov di,8000h第2章例题执行下列指令执行下列指令 mov al,100 mov bl,
11、-2 后,正确的结果是。后,正确的结果是。A AL=100H、BL=02H B AL=64H、BL=FEHC AL=64H、BL=82H D AL=100H、BL=FEH 第2章2. 交换指令XCHG(exchange)把两个地方的数据进行互换把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与寄存器之间对换数据寄存器与存储器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem寄存器间交换寄存器间交换mov ax,1234hmov
12、 ax,1234h;ax=1234hax=1234hmov bx,5678hmov bx,5678h;bx=5678hbx=5678hxchg ax,bxxchg ax,bxxchg ah,alxchg ah,al;ax=7856hax=7856h寄存器与存储器交换寄存器与存储器交换xchg ax,2000hxchg ax,2000h ;字交换;字交换;等同于;等同于 xchg 2000h,axxchg 2000h,axxchg al,2000h xchg al,2000h ;字节交换;字节交换;等同于;等同于 xchg 2000h,alxchg 2000h,al 第2章3. 换码指令XLAT
13、(translate)将将BX指定的缓冲区中、指定的缓冲区中、AL指定的位移指定的位移处的一个字节数据取出赋给处的一个字节数据取出赋给ALXLATXLAT;alds:bx+alalds:bx+al换码指令没有显式的操作数,默换码指令没有显式的操作数,默认使用认使用BX和和AL;代码转换代码转换mov bx,100h mov bx,100h ;表格首地址表格首地址mov al,03hmov al,03h;偏移量偏移量XlatXlat;转换;转换第2章换码指令执行前:换码指令执行前:在主存建立一个在主存建立一个字节量表格字节量表格,内含要转换成的目的代码,内含要转换成的目的代码表格首地址表格首地址
14、存放于存放于BXBX,ALAL存放相对表格首地址的存放相对表格首地址的位移量位移量换码指令执行后:换码指令执行后:将将ALAL寄存器的内容转换为寄存器的内容转换为目标代码目标代码3. 换码指令XLAT2.1.2 堆栈操作指令堆栈是一个堆栈是一个“后进先出后进先出”(或说(或说“先进后先进后出出FILO”FILO”)的主存区域,位于堆栈段中;)的主存区域,位于堆栈段中;段地址记录在段地址记录在SSSS段寄存器中段寄存器中堆栈只有一个出口,即当前栈顶;用堆栈只有一个出口,即当前栈顶;用堆栈堆栈指针寄存器指针寄存器SPSP指定指定栈顶是地址较小的一端(低端),栈底不栈顶是地址较小的一端(低端),栈底
15、不变变第2章第2章10001000SSSS00180018SPSP60605050404030302020101010018100181001A1001A栈顶栈顶栈底栈底10001000SSSS00160016SPSP606050504040303020201010ABABCDCD10018100181001A1001A栈顶栈顶栈底栈底10001000SSSS001A001ASPSP40403030202010101001A1001A栈顶栈顶栈底栈底1001610016(a) (b) (c)(a) (b) (c)图图3.183.1880868086系统椎栈及其操作系统椎栈及其操作( (a)a)
16、堆栈原始状态堆栈原始状态 ( (b)b)执行执行push AX (c)push AX (c)执行执行POP AXPOP AX ( (AX)=CDABH AX)=CDABH POP BX POP BX后的状态后的状态第2章堆栈的操作堆栈只有两种基本操作:进栈和堆栈只有两种基本操作:进栈和出栈,对应两条指令出栈,对应两条指令PUSH和和POPPUSHPUSH;进栈指令先使;进栈指令先使堆栈指针堆栈指针SPSP减减2 2,然后把一个字操然后把一个字操作数存入堆栈顶作数存入堆栈顶部部POPPOP;出栈指令把栈顶;出栈指令把栈顶的一个字传送至指的一个字传送至指定的目的操作数,定的目的操作数,然后堆栈指针
17、然后堆栈指针SPSP加加2 2第2章堆栈的特点堆栈操作的单位是字堆栈操作的单位是字,进栈和出栈只对字量,进栈和出栈只对字量字量数据从栈顶压入和弹出时,都是字量数据从栈顶压入和弹出时,都是低地址低地址字节送低字节,高地址字节送高字节字节送低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储器堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据寻址方式随机存取堆栈中的数据堆栈常用来堆栈常用来n临时存放数据临时存放数据n传递参数传递参数n保存和恢复寄存器保存和恢复寄存器第2章1. 标志寄存器传送标志寄存器传送指令用来传送标标志寄存器传送指令用来传送标志寄存器志寄存器FLAGS
18、的内容,方便进的内容,方便进行对各个标志位的直接操作行对各个标志位的直接操作有有2对对4条指令条指令n低低8位传送:位传送:LAHF和和SAHFn16位传送:位传送:PUSHF和和POPF标志低字节进出AH指令LAHFLAHF;AHFLAGSAHFLAGS的低字节的低字节LAHFLAHF指令将标志寄指令将标志寄存器的存器的低字节低字节送寄送寄存器存器AHAHSAHFSAHF;FLAGSFLAGS的低字节的低字节AHAHSAHFSAHF将将AHAH寄存器内寄存器内容送容送FLAGSFLAGS的的低字节低字节第 2 章标志寄存器进出堆栈指令PUSHFPUSHF;SPSPSPSP2 2;SS:SPF
19、LAGSSS:SPFLAGSPUSHFPUSHF指令将标志寄存指令将标志寄存器的内容压入堆栈,器的内容压入堆栈,同时栈顶指针同时栈顶指针SPSP减减2 2POPFPOPF;FLAGSSS:SPFLAGSSS:SP;SPSPSPSP2 2POPFPOPF指令将栈顶字单元指令将栈顶字单元内容送标志寄存器,同内容送标志寄存器,同时栈顶指针时栈顶指针SPSP加加2 2第2章置位单步标志置位单步标志pushfpushfpop axpop ax; AXFLAGSAXFLAGSor ax,0100hor ax,0100h ;设置;设置D D8 8=TF=1=TF=1,push axpush ax;将;将ax
20、ax压入堆栈压入堆栈popfpopf;FLAGSAXFLAGSAX;将堆栈内容取到标志寄存器;将堆栈内容取到标志寄存器;功能:设置跟踪标志位;功能:设置跟踪标志位第2章2. 标志位操作标志位操作指令直接对标志位操作指令直接对CF、DF、IF标志进行复位或置位,常用于特标志进行复位或置位,常用于特定的情况定的情况对标志位进行设置的指令对标志位进行设置的指令nCLC STC CMCnCLD STDnCLI STI第2章进位标志操作指令用于任意设置进位标志用于任意设置进位标志CLCCLC;复位进位标志:;复位进位标志:CF0CF0STCSTC;置位进位标志:;置位进位标志:CF1CF1CMCCMC;
21、求反进位标志:;求反进位标志:CFCFCFCF第2章方向标志操作指令串操作指令中,需要使用串操作指令中,需要使用CLDCLD;复位方向标志:;复位方向标志:DF0DF0STDSTD;置位方向标志:;置位方向标志:DF1DF1第2章中断标志操作指令在编写中断服务程序时,需要在编写中断服务程序时,需要控制可屏蔽中断的允许和禁止控制可屏蔽中断的允许和禁止CLICLI;复位中断标志:;复位中断标志:IF0IF0STISTI;置位中断标志:;置位中断标志:IF1IF1第2章2.1.4 地址传送指令地址传送指令将存储器单元的逻地址传送指令将存储器单元的逻辑地址送至指定的寄存器辑地址送至指定的寄存器n有效地
22、址传送指令有效地址传送指令 LEAn指针传送指令指针传送指令 LDS和和LES注意不是获取存储器单元的内容注意不是获取存储器单元的内容第2章有效地址传送指令LEA(load EA)将存储器操作数的有效地址传将存储器操作数的有效地址传送至指定的送至指定的16位寄存器中位寄存器中LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEA获取有效地址获取有效地址mov bx,0400hmov bx,0400hmov si,3chmov si,3chlea bx,bx+si+0f62hlea bx,bx+si+0f62h;BXBX0400h0400h003ch0
23、03ch0f62h0f62h139EH139EH 获得主存单元的有效地址;获得主存单元的有效地址;第2章例题 执行如下指令执行如下指令“mov sp,4320h”和和“push bx”之后,之后,SP寄存器的寄存器的值是值是 A 4321H B 4322H C 431EH D 431FH 第2章例题 假定假定DS=4000H、DI=0100H、40100H=55H、40101H=AAH, 那么执行指令那么执行指令“lea bx,di”后,后,BX=。 A AA55H B 55AAH C 0100H D 4100H 第2章例题 用一条指令实现用一条指令实现AXBX+SI的方法是。的方法是。 A
24、xchg ax,bxsi B mov ax,bxsi C mov ax,bx+si D lea ax,bxsi 第2章例题已知数字已知数字0-9对应的格雷码依次为:对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、1lH、12H、14H,它存在于以,它存在于以table为为首地址首地址(设为设为200H)的连续区域中请的连续区域中请为如下程序段的每条指令加上注释,为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果:说明每条指令的功能和执行结果: lea bx,table mov al,8 xlat 指针传送指令LDS r16,memLDS r16,mem;r
25、16(mem)r16(mem),;DS(mem+2)DS(mem+2)将将memmem指定的字送指定的字送至至r16r16,并将,并将memmem的的下一字送下一字送DSDS寄存器寄存器LES r16,memLES r16,mem;r16(mem)r16(mem),;ES(mem+2)ES(mem+2)将将memmem指定的字送指定的字送至至r16r16,并将,并将memmem的的下一字送下一字送ESES寄存器寄存器第2章地址指针传送地址指针传送mov word ptr 3060h,0100hmov word ptr 3060h,0100hmov word ptr 3062h,1450hmov
26、 word ptr 3062h,1450hles di,3060hles di,3060h ;es=1450hes=1450h,di=0100hdi=0100hlds si,3060hlds si,3060h ;ds=1450hds=1450h,si=0100hsi=0100h第2章2.1.5 输入输出指令8086通过输入输出指令与外设进行通过输入输出指令与外设进行数据交换数据交换呈现给程序员的外设是呈现给程序员的外设是端口端口(Port)即即I/O地址地址端口最多有端口最多有21665536(64K)个,)个,端口号为端口号为0000HFFFFH第2章输入输出寻址方式8086的端口有两种寻址
27、方式的端口有两种寻址方式v直接寻址直接寻址:只用于寻址:只用于寻址00HFFH前前256个端口个端口v间接寻址间接寻址:可用于寻址全部:可用于寻址全部64K个端口,个端口,DX寄存器的值就是端口寄存器的值就是端口号号第2章输入指令IN将外设数据传送给将外设数据传送给CPU内的内的AL/AXIN AL,i8IN AL,i8;字节输入:;字节输入:ALI/OALI/O端口(端口(i8i8直接寻址)直接寻址)IN AL,DXIN AL,DX;字节输入:;字节输入:ALI/OALI/O端口(端口(DXDX间接寻址)间接寻址)IN AX,i8IN AX,i8;字输入:;字输入:AXI/OAXI/O端口(
28、端口(i8i8直接寻址)直接寻址)IN AX,DXIN AX,DX;字输入:;字输入:AXI/OAXI/O端口(端口(DXDX间接寻址)间接寻址)输入字量输入字量;直接寻址,字节量输入;直接寻址,字节量输入in al,21hin al,21hmov ah,almov ah,alin al,20hin al,20h;直接寻址,字量输入;直接寻址,字量输入in ax,20hin ax,20h第2章输出指令OUT将将CPU内的内的AL/AX数据传送给外设数据传送给外设OUT i8,ALOUT i8,AL;字节输出:;字节输出:I/OI/O端口端口ALAL(i8i8直接寻址)直接寻址)OUT DX,A
29、LOUT 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间接寻址)间接寻址)输出字节量输出字节量;间接寻址,字节量输出;间接寻址,字节量输出mov dx,3fchmov dx,3fchmov al,80hmov al,80hout dx,alout dx,al第2章2.2 算术运算类指令四则运算是计算机经常进行的一种操四则运算是计算机经常进行的
30、一种操作。算术运算指令实现二进制(和十作。算术运算指令实现二进制(和十进制)数据的四则运算进制)数据的四则运算请注意算术运算类指令请注意算术运算类指令对标志的影响对标志的影响n掌握:掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMPn熟悉:熟悉:MUL/IMUL、DIV/IDIVn理解:理解:CBW/CWD、DAA/DAS、 AAA/ AAS/AAM/AAD第2章加法指令ADDADD指令将源与目的操作数相加,结指令将源与目的操作数相加,结果送到目的操作数果送到目的操作数ADD指令按状态标志的定义相应设置指令按状态标志的定义相应设置ADD reg,imm/reg/memADD
31、 reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memADD mem,imm/regADD mem,imm/reg;memmemmemmemimm/regimm/reg例:加法运算例:加法运算mov al,0fbhmov al,0fbh;al=0fbhal=0fbhadd al,07hadd al,07h;al=02hal=02hmov bx,1fehmov bx,1feh;bx=1fehbx=1fehadd al,bladd al,bl;al=00hal=00hmov word ptr 200h,4652hmov word ptr 200h,4
32、652h;200h=4652h200h=4652hadd word ptr bx+2,0f0f0hadd word ptr bx+2,0f0f0h;200h=3742h200h=3742h第2章带进位加法指令ADCADC指令将源与目的操作数相加,再加指令将源与目的操作数相加,再加上进位上进位CF标志,结果送到目的操作数标志,结果送到目的操作数ADC指令按照定义相应设置状态标志指令按照定义相应设置状态标志ADC reg,imm/reg/memADC reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFADC mem,imm/regADC m
33、em,imm/reg;memmemmemmemimm/regimm/regCFCF例:双字加法例:双字加法mov ax,4652hmov ax,4652h;ax=4652hax=4652hadd ax,0f0f0hadd ax,0f0f0h ;ax=3742hax=3742h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hadc dx,0f0f0hadc dx,0f0f0h ;dx=f325hdx=f325h,CF=0CF=0;DX.AXDX.AX0234 4652H0234 4652HF0F0 F0F0HF0F0 F0F0HF325 374
34、2HF325 3742H第2章增量指令INC(increment)INC指令对操作数加指令对操作数加1(增量)(增量)INC指令不影响进位指令不影响进位CF标志,按标志,按定义设置其他状态标志定义设置其他状态标志INC reg/memINC reg/mem;reg/memreg/memreg/memreg/mem1 1inc bxinc bxinc byte ptr bxinc byte ptr bx第2章例题执行下列指令序列执行下列指令序列 mov al,81h add al,al adc al,al 后,后,AL=。 A 04H B 05H C 204H D 205H 第2章例题 当执行指
35、令当执行指令“ADD AX,BX”后,设后,设置的奇偶标志位置的奇偶标志位PF=1,则下面的叙述,则下面的叙述正确的是。正确的是。A 表示结果中含表示结果中含1的个数为偶数或零的个数为偶数或零B 表示结果中含表示结果中含1的个数为奇数的个数为奇数C 表示该数为偶数表示该数为偶数D 表示结果中低表示结果中低8位含位含1的个数为偶数或的个数为偶数或零零 第2章减法指令SUB(subtract)SUB指令将目的操作数减去源操作数,指令将目的操作数减去源操作数,结果送到目的操作数结果送到目的操作数SUB指令按照定义相应设置状态标志指令按照定义相应设置状态标志SUB reg,imm/reg/memSUB
36、 reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memSUB mem,imm/regSUB mem,imm/reg;memmemmemmemimm/regimm/reg例:减法运算例:减法运算mov al,0fbhmov al,0fbh;al=0fbhal=0fbhsub al,07hsub al,07h;al=0f4hal=0f4h,CFCF0 0mov bx,1fehmov bx,1feh;bx=1fehbx=1fehsub al,blsub al,bl;al=al=0f6h0f6hmov word ptr 200h,4652hmov wor
37、d ptr 200h,4652h;200h=4652h200h=4652hsub word ptr bx+2,0f0f0hsub word ptr bx+2,0f0f0h;200h=5562h200h=5562h,CFCF1 1第2章带借位减法指令SBBSBB指令将目的操作数减去源操作数,指令将目的操作数减去源操作数,再减去借位再减去借位CF(进位),结果送到目的(进位),结果送到目的操作数。操作数。SBB指令按照定义相应设置状态标志指令按照定义相应设置状态标志SBB reg,imm/reg/memSBB reg,imm/reg/mem;regregregregimm/reg/memimm/r
38、eg/memCFCFSBB mem,imm/regSBB mem,imm/reg;memmemmemmemimm/regimm/regCFCF例:双字减法例:双字减法mov ax,4652hmov ax,4652h;ax=4652hax=4652hsub ax,0f0f0hsub ax,0f0f0h ;ax=5562hax=5562h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hsbb dx,0f0f0hsbb dx,0f0f0h ;dx=1143hdx=1143h,CF=1CF=1;DX.AXDX.AX0234 4652H0234 465
39、2HF0F0 F0F0HF0F0 F0F0H1143 5562H1143 5562H第2章减量指令DEC(decrement)DEC指令对操作数减指令对操作数减1(减量)(减量)DEC指令不影响进位指令不影响进位CF标志,按标志,按定义设置其他状态标志定义设置其他状态标志DEC reg/memDEC reg/mem;reg/memreg/memreg/memreg/mem1 1dec cxdec cxdec word ptr sidec word ptr si INC指令和指令和DEC指令都是单操作数指令指令都是单操作数指令 主要用于对计数器和地址指针的调整主要用于对计数器和地址指针的调整第2
40、章例题 执行执行DEC指令不影响的标志位指令不影响的标志位是。是。 A SF B PF C OF D CF 答案: D第2章例题设设AL=20H、SI=0500H、DS=3000H、30500H=0C0H、CF=1。执行。执行“SBB AL,SI”指令后,正确的指令后,正确的结果是。结果是。 A AL=5FH、SF=1、CF=1 B AL=60H、SF=1、CF=0 C AL=5FH、SF=0、CF=1 D AL=60H、SF=0、CF=0 第2章求补指令NEG(negative)NEG指令对操作数执行求补运算:用指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数零减去操作数,然后结
41、果返回操作数求补运算也可以表达成:将操作数求补运算也可以表达成:将操作数按按位取反后加位取反后加1NEG指令对标志的影响指令对标志的影响与用零作减法与用零作减法的的SUB指令一样指令一样NEG reg/memNEG reg/mem;reg/mem0reg/mem0reg/memreg/mem例:求补运算例:求补运算mov ax,0ff64hmov ax,0ff64hneg alneg al;ax=ff9chax=ff9ch,OF=0OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF=1CF=1sub al,9dhsub al,9dh;ax=ffffhax=ffffh,OF=0
42、OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF=1CF=1neg axneg ax;ax=0001hax=0001h,OF=0OF=0、SF=0SF=0、ZF=0ZF=0、PF=0PF=0、CF=1CF=1dec aldec al;ax=0000hax=0000h,OF=0OF=0、SF=0SF=0、ZF=1ZF=1、PF=1PF=1、CF=1CF=1neg axneg ax;ax=0000hax=0000h,OF=0OF=0、SF=0SF=0、ZF=1ZF=1、PF=1PF=1、CF=0CF=0第2章例题 若若AX=2891H,则执行,则执行“neg ax”指令后,指令
43、后,CF和和SF标志位的状态分标志位的状态分别是。别是。 A 0和和0 B 0和和1 C 1和和0 D 1和和1 答案: D第2章比较指令CMP(compare)CMP指令将目的操作数减去源操作数,指令将目的操作数减去源操作数,按照定义相应设置状态标志按照定义相应设置状态标志,但但结果不结果不回送目的操作数回送目的操作数CMP reg,imm/reg/memCMP reg,imm/reg/mem;regregimm/reg/memimm/reg/memCMP mem,imm/regCMP mem,imm/reg;memmemimm/regimm/reg例:比较例:比较AL与与100cmp al
44、,100cmp al,100;jb belowjb belowmov al,0mov al,0out 12h,alout 12h,aljmp finishjmp finishbelow:below: mov al,0ffhmov al,0ffhout 12h,alout 12h,alfinish:finish:2.2.3 乘法指令MUL r8/m8MUL r8/m8;无符号字节乘法;无符号字节乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;无符号字乘法;无符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r
45、8/m8;有符号字节乘法;有符号字节乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符号字乘法;有符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16第2章第2章乘法指令的功能乘法指令乘法指令分无符号和有符号乘法指令分无符号和有符号乘法指令乘法指令的源操作数显式给出,乘法指令的源操作数显式给出,隐含隐含使用另一个操作数使用另一个操作数AL和和AXn字节量相乘:字节量相乘:AL与与r8/m8相乘,得到相乘,得到16位位的结果,存入的结果,存入AXn字量相乘:字量相乘:AX与与r16/m16相乘,得到相乘,得到32位的结果,其高字存入位
46、的结果,其高字存入DX,低字存入,低字存入AX乘法指令利用乘法指令利用OF和和CF判断乘积的高一判断乘积的高一半是否具有有效数值半是否具有有效数值第2章乘法指令对标志的影响乘法指令如下影响乘法指令如下影响OF和和CF标志:标志:nMUL指令指令若乘积的高一半(若乘积的高一半(AH或或DX)为为0,则,则OF=CF=0;否则;否则OF=CF=1nIMUL指令指令若乘积的高一半是低一半若乘积的高一半是低一半的符号扩展,则的符号扩展,则OF=CF=0;否则均为;否则均为1乘法指令对其他状态标志乘法指令对其他状态标志没有定义没有定义 对标志没有定义:指令执行后这些标志是任对标志没有定义:指令执行后这些
47、标志是任意的、不可预测(就是谁也不知道是意的、不可预测(就是谁也不知道是0还是还是1) 对标志没有影响:指令执行不改变标志状态对标志没有影响:指令执行不改变标志状态例:乘法运算例:乘法运算mov al,0b4hmov al,0b4h;al=b4h=180al=b4h=180mov bl,11hmov bl,11h;bl=11h=17bl=11h=17mul blmul bl;ax=Obf4h=3060ax=Obf4h=3060;OF=CF=1OF=CF=1,AXAX高高8 8位不为位不为0 0mov al,0b4hmov al,0b4h;al=b4h=al=b4h=7676mov bl,11h
48、mov bl,11h;bl=11h=17bl=11h=17imul blimul bl;ax=faf4h=ax=faf4h=12921292;OF=CF=1OF=CF=1,AXAX高高8 8位含有效数字位含有效数字2.2.4 除法指令DIV r8/m8DIV r8/m8;无符号字节除法:;无符号字节除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数DIV r16/m16DIV r16/m16;无符号字除法:;无符号字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m
49、16的余数的余数IDIV r8/m8IDIV r8/m8;有符号字节除法:;有符号字节除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数IDIV r16/m16IDIV r16/m16;有符号字除法:;有符号字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数第2章第2章除法指令的功能除法指令分无符号和有符号除法指令除法指令分无符号和有符号除法指令除法指令的除数显式给出,隐含使用除法指令的除数显式给出,隐含使用另一个操作数另一个操作数AX和和DX作为
50、被除数作为被除数n字节量除法:字节量除法:AX除以除以r8/m8,8位商存入位商存入AL,8位余数存入位余数存入AHn字量除法:字量除法:DX.AX除以除以r16/m16,16位商位商存入存入AX,16位余数存入位余数存入DX除法指令对标志没有定义除法指令对标志没有定义除法指令会产生结果溢出除法指令会产生结果溢出第2章除法错中断当被除数远大于除数时,所得的商就当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。如果有可能超出它所能表达的范围。如果存放商的寄存器存放商的寄存器AL/AX不能表达,便不能表达,便产生溢出,产生溢出,8086CPU中就产生编号为中就产生编号为0的内部中断的内部
51、中断除法错中断除法错中断n对对DIV指令,除数为指令,除数为0,或者在字节除时,或者在字节除时商超过商超过8位,或者在字除时商超过位,或者在字除时商超过16位,位,则发生除法溢出则发生除法溢出n对对IDIV指令,除数为指令,除数为0,或者在字节除时,或者在字节除时商不在商不在-128127范围内,或者在字除时范围内,或者在字除时商不在商不在-3276832767范围内,则发生除范围内,则发生除法溢出法溢出例:除法运算例:除法运算mov ax,0400hmov ax,0400h;ax=400h=1024ax=400h=1024mov bl,0b4hmov bl,0b4h;bl=b4h=180bl
52、=b4h=180div bldiv bl;商;商alal05h05h5 5;余数;余数ahah7ch7ch124124mov ax,0400hmov ax,0400h;ax=400h=1024ax=400h=1024mov bl,0b4hmov bl,0b4h;bl=b4h=bl=b4h=7676idiv blidiv bl;商;商alalf3hf3h1313;余数;余数ahah24h24h36362.2.5 符号扩展指令CBWCBW;ALAL的符号扩展至的符号扩展至AHAH;如;如ALAL的最高有效位是的最高有效位是0 0,则,则AHAH0000;ALAL的最高有效位为的最高有效位为1 1,
53、则,则AHAHFFHFFH。ALAL不变不变CWDCWD;AXAX的符号扩展至的符号扩展至DXDX;如;如AXAX的最高有效位是的最高有效位是0 0,则,则DXDX0000;AXAX的最高有效位为的最高有效位为1 1,则,则DXDXFFFFHFFFFH。AXAX不变不变第2章第2章符号扩展的概念符号扩展是指用一个操作数的符号位符号扩展是指用一个操作数的符号位(即最高位)形成另一个操作数,该(即最高位)形成另一个操作数,该操作数的各位是全操作数的各位是全0(正数)或全(正数)或全1(负数)。(负数)。符号扩展不改变数据大小符号扩展不改变数据大小n对于数据对于数据64H(表示数据(表示数据100)
54、,其最高),其最高位位D7为为0,符号扩展后高,符号扩展后高8位都是位都是0,成为,成为0064H(仍表示数据(仍表示数据100)n对于数据对于数据ff00H(表示有符号数(表示有符号数256),),其最高位其最高位D15为为1,符号扩展后高,符号扩展后高16位都位都是是1,成为,成为ffffff00H(仍表示有符号数(仍表示有符号数256)例:符号扩展例:符号扩展mov al,80hmov al,80h;al=80hal=80hcbwcbw;ax=ff80hax=ff80hadd al,255add al,255;al=7fhal=7fhcbwcbw;ax=007fhax=007fh例:例:
55、AXBXcwdcwd;DX.AXAXDX.AXAXidiv bxidiv bx;AXDX.AXAXDX.AXBXBX2.2.6 十进制调整指令q压缩压缩BCD码就是通码就是通常的常的8421码;一个码;一个字节可以表示两个字节可以表示两个十进制位,即十进制位,即0099q非压缩非压缩BCD码用一码用一个字节表示一个十个字节表示一个十进制位,用低进制位,用低4位位表示一个十进制位表示一个十进制位09,高,高4位任意,位任意,通常默认为通常默认为0十进制数调整指令对二进制运算的结果进十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果行十进制调整,以得到十进制的运算结果分成压缩
56、分成压缩BCDBCD码和非压缩码和非压缩BCDBCD码调整码调整第2章第2章BCD码(Binary Coded Decimal) 真值真值864二进制编码二进制编码08H 40H压缩压缩BCD码码08H 64H非压缩非压缩BCD码码08H 0604H压缩BCD码加、减调整指令(ADD AL,i8/r8/m8ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8ADC AL,i8/r8/m8)DAADAA;ALAL将将ALAL中的和调整中的和调整为压缩为压缩BCDBCD码码(SUB AL,i8/r8/m8SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8SBB AL,i8
57、/r8/m8)DASDAS;ALAL将将ALAL中的差调整中的差调整为压缩为压缩BCDBCD码码 DAA和和DAS指令对指令对OF标志无定义,按结果影标志无定义,按结果影响其他标志,例如响其他标志,例如CF反映压缩反映压缩BCD码相加或减的码相加或减的进位或借位状态进位或借位状态第2章例:压缩例:压缩BCD加法加法mov al,68hmov al,68h;al=104al=104,压缩,压缩BCDBCD码表示真值码表示真值6868mov bl,28hmov bl,28h;bl=40bl=40,压缩,压缩BCDBCD码表示真值码表示真值2828add al,bladd al,bl;二进制加法:;
58、二进制加法:al=68h+28h=90h=144al=68h+28h=90h=144daadaa;十进制调整:;十进制调整:al=96hal=96h;实现压缩;实现压缩BCDBCD码加法:码加法:686828289696例:压缩例:压缩BCD减法减法mov al,68hmov al,68h;al=68hal=68h,压缩,压缩BCDBCD码表示真值码表示真值6868mov bl,28hmov bl,28h;bl=28hbl=28h,压缩,压缩BCDBCD码表示真值码表示真值2828sub al,blsub al,bl;二进制减法:;二进制减法:al=68h-28h=40hal=68h-28h=
59、40hdasdas;十进制调整:;十进制调整:al=40hal=40h;实现压缩;实现压缩BCDBCD码加法:码加法:68-2868-284040例:压缩例:压缩BCD减法减法mov ax,1234hmov ax,1234hmov bx,4612hmov bx,4612hsub al,blsub al,bldasdas;34-1234-122222,CFCF0 0 xchg al,ah xchg al,ah ;十进制调整指令的操作对象为;十进制调整指令的操作对象为ALALsbb al,bhsbb al,bhdasdas;12-4612-466666,CF=1CF=1xchg al,ahxchg
60、 al,ah ;1 12341 12344612461266226622非压缩BCD码加、减调整指令(ADD AL,i8/r8/m8ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8ADC AL,i8/r8/m8)AAAAAA;ALAL将将ALAL的加和调整为的加和调整为非压缩非压缩BCDBCD码码;AHAHAHAH调整的进位调整的进位(SUB AL,i8/r8/m8SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8SBB AL,i8/r8/m8)AASAAS;ALAL将将ALAL的减差调整的减差调整为非压缩为非压缩BCDBCD码码;AHAHAHAH调整的借位调整的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025三明市三元区列西街道社区工作者考试真题
- 2025年项目部管理人员安全培训考试试题答案完整
- 2024-2025工厂职工安全培训考试试题及答案审定
- 2025项目部管理人员安全培训考试试题【预热题】
- 25年企业安全管理人员安全培训考试试题【考点梳理】
- 2025管理人员岗前安全培训考试试题及参考答案(突破训练)
- 2025公司安全管理人员安全培训考试试题及完整答案1套
- 辽宁省海城市第六中学2025届初三下学期4月模拟化学试题含解析
- 山东省临沂市兰陵县2025届三年级数学第二学期期末复习检测试题含解析
- 南京工业大学《外国民族音乐》2023-2024学年第一学期期末试卷
- 2024年四川省南充市中考生物试卷真题(含官方答案)
- 劳动教育智慧树知到期末考试答案章节答案2024年华中师范大学
- 成人高尿酸血症与痛风食养指南(2024年版)
- 2024年首都机场集团招聘笔试参考题库附带答案详解
- 2023年山东省专升本考试高等数学Ⅲ试题和答案
- 抗血栓药物临床应用与案例分析课件
- 吉林省地方教材家乡小学二年级下册家乡教案
- 决策树在饲料技术推广中的应用研究
- 儿童长期卧床的护理
- 投标书细节美化教程
- 《小儿支气管肺炎》课件
评论
0/150
提交评论