汇编语言基础3_第1页
汇编语言基础3_第2页
汇编语言基础3_第3页
汇编语言基础3_第4页
汇编语言基础3_第5页
已阅读5页,还剩300页未读 继续免费阅读

下载本文档

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

文档简介

1、 图图3-1 无符号整数无符号整数 补补补YXYX 补补补Y-XYX) 12() 12(11nn) 12() 12(11nn) 12()2(11nn【例例3-3】 机器字长机器字长n=8 ,用补码运算求用补码运算求(64 10) 解:设解:设 z = 64 10 = 64+(- 10) +64补补=01000000B ,- 10原原= 10001010B, - 10补补=11110110B, 或或 10补补补补=00001010变补变补=11110110B z补补= 64-10补补=+64补补+ - 10补补 = 01000000 +11110110 = 00110110B 结果结果z = +

2、5462010.10110101- 0 0110 10100101011重庆邮电学院计算机科学与技术学院 王练【例例3-83-8】设阶码用原码表示设阶码用原码表示, , 尾数用补码尾数用补码表示表示, , 求下列浮点机器数得真值求下列浮点机器数得真值. .解解: : 真值真值= =221101100111. 0 0 0010 10010011001阶符 阶码 尾符 尾数重庆邮电学院计算机科学与技术学院 王练重庆邮电学院计算机科学与技术学院 王练解解: (1): (1)当阶码和尾数均用补码表示当阶码和尾数均用补码表示: :重庆邮电学院计算机科学与技术学院 王练(2)(2)当阶码和尾数均用原码表示

3、当阶码和尾数均用原码表示: : HL 0000010100111001011101110000NULDLESP0Pp0001SOHDC1!1AQaq0010STXDC2“2BRbr0011ETXDC3#3CScs0100EOTDC44DTdt0101ENGNAK5EUeu0110ACKSYN&6FVfv0111BELETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:J Z jz1011VTESC+;Kk1100FFFS,Nn1111SIUS/?OoDEL表表3.2 标准标准ASCII码字符表码字符表32 x86微处理器的指令格式微处理器的指

4、令格式opcod modr/mregdispdata操作码操作码 方式存储器方式存储器 位移量位移量 立即数立即数 (Mod 字节字节)图图3-4 8086/8088不同字长的指令格式类型不同字长的指令格式类型 图图3-5 操作码和寻址方式字节格式操作码和寻址方式字节格式 modr/m存储器寻址寄存器寻址逻辑地址的计算公式W=0W=1Mod=00BMod=01BMod=10BMod=11B000001010011100101110111DS:BX+SIDS:BX+DISS:BP+SISS:BP+DIDS:SIDS:DIDS:disp16DS:BXDS:BX+SI+disp8DS:BX+DI+d

5、isp8SS:BP+SI+disp8SS:BP+DI+disp8DS:SI+disp8DS:DI+disp8SS:BP+disp8DS:BX+disp8DS:BX+SI+disp16DS:BX+DI+disp16SS:BP+SI+disp16SS:BP+DI+disp16DS:SI+disp16DS:DI+disp16SS:BP+disp16DS:BX+disp16ALCLDLBLAHCHDHBHAXCXDXBXSPBPSIDI表表3.5 mod与与r/m域所组成的寻址方式域所组成的寻址方式【例例3-113-11】写出写出MOV AH,BX+DI+50HMOV AH,BX+DI+50H的机器语

6、言编码。的机器语言编码。OpcodeDWmod reg r/mdisp8 0000001 001 100 001 01010000操作码操作码操作数操作数(地址码地址码)操作数操作数(地址码地址码)图图3-6 3-6 指令格式指令格式OPOPOPD1D2OPD1D2D333 x86微处理器的寻址方式微处理器的寻址方式MOV AX, 0102H;AX0102H立即数寻址方式寄存器寻址方式寄存器寻址示意图寄存器寻址示意图寄存器寄存器(源操作数源操作数 )寄存器(目的操作数)寄存器(目的操作数)0 0 1 0 1 1 0 0AH? ? ? ? ? ? ? ?BL0 0 1 0 1 1 0 0BL【例

7、【例3-143-14】MOVMOV BL, AHBL, AH执行前执行前AH = 00101100BAH = 00101100B执行后执行后BL= 00101100BBL= 00101100B【例例3-15】寄存器寻址方式举例:寄存器寻址方式举例:MOV AL, BL;BL寄存器的内容寄存器的内容ALMOV DS, AX;AX寄存器的内容寄存器的内容DSINC CX;CX寄存器的内容加寄存器的内容加1DEC SI;SI寄存器的内容减寄存器的内容减1ADD AX, BX;AXBX寄存器的内容寄存器的内容;相加,结果;相加,结果AX操作数所在内存单元的完整地址表达式操作数所在内存单元的完整地址表达

8、式: :段寄存器段寄存器R : R : 基址基址R+R+变址变址R R* *比例因子比例因子+ +位移量位移量 通知通知CUP访问哪个访问哪个逻辑段逻辑段有效地址有效地址/偏移地址偏移地址1.直接寻址直接寻址MOV AX, 2000H;AXDS:2000HMOV AX, ES: 2000H;AXES:2000H直接寻址方式【例例3-17】直接寻址方式举例:直接寻址方式举例:MOV DX, DS:2346H ;取出数据段取出数据段EA为为2346H字单元中的内容字单元中的内容DXMOV BL, ES:3CH;取出附加段取出附加段EA为为3CH字节单元中的内容字节单元中的内容BL【例例3-18】取

9、出数据段中以取出数据段中以VAR命名的字单元命名的字单元的内容送的内容送AX寄存器,请写出该指令:寄存器,请写出该指令:MOV AX, DS:VAR 或或MOV AX, VAR直接寻址的使用及限制2.寄存器间接寻址寄存器间接寻址多种书写形式:多种书写形式:MOV AX, SI+06H;AXDS:SI+06HMOV AX, 06HSI;AXDS:SI+06H间接寻址方式3.寄存器相对寻址寄存器相对寻址MOV AX, SI+06H;AXDS:SI+06HMOV AX, SI+06H;AXDS:SI+06H相对寻址方式4.基址变址寻址基址变址寻址MOV AX, BX+SI;AXDS:BX+SIMOV

10、 AX, BXSI;AXDS:BX+SI基址变址寻址方式5.相对基址变址寻址相对基址变址寻址MOV AX, BX+DI+6;AXDS:BX+DI+6MOV AX, 6BX+DIMOV AX, 6BXDI相对基址变址寻址方式寄存器间接寻址图示寄存器间接寻址图示A050A05020000H21000H40000H42000HAXDX【例例3-18】 MOV AX,BX,如图所示如图所示 执行前执行前(DS)=2000H,(BX)= 1000HEA = (BX)=1000H PA = 10H*(DS) +EA = 10H*2000H+1000H =21000H【例例3-19】 MOV DX,ES:B

11、X执行前执行前(DS)=2000H(ES)=4000H(BX)=2000HEA = ?PA = ?基址寻址图示基址寻址图示OPOP00303412操作码操作码位移量位移量30000H代码段代码段35000H33000HAX【例例3-203-20】MOV AX,COUNTBX MOV AX,COUNTBX 或或 MOV AX,COUNT+BXMOV AX,COUNT+BX COUNT COUNT为为1616位位移量的符号地址位位移量的符号地址, , 如果如果(DS)=3000H, (BX)=2000H(DS)=3000H, (BX)=2000HCOUNT = 3000H, COUNT = 300

12、0H, 则则PA = 35000HPA = 35000H无比例因子的变址寻址图示无比例因子的变址寻址图示OPOP00303412操作码操作码位移量位移量30000H代码段代码段35000H33000HAX【例例3-21】 MOV AX,COUNTSI(MOV AX,COUNT+SI)COUNT为为16位位移量的符号地址。位位移量的符号地址。如果如果(DS)=3000h (SI)=2000h COUNT = 3000H PA = 35000H6.有比例因子的变址寻址有比例因子的变址寻址变址寄存器可为变址寄存器可为EBPEBP或或EAXEDX, ESI, EDIEAXEDX, ESI, EDI这这

13、7 7个个3232位寄存器位寄存器. . 除除EBPEBP默认访问默认访问SSSS外外, , 其余变址寄存器默认访问其余变址寄存器默认访问DS.DS.默认情况下默认情况下: : PA=10H PA=10H* *(DS) + (DS) + (比例因子比例因子 ESI) + D8 ESI) + D8PA=10HPA=10H* *(DS)+(DS)+(比例因子比例因子ESI) + D16ESI) + D16有比例因子的变址寻址图示有比例因子的变址寻址图示OPOP00303412操作码操作码位移量位移量30000H代码段代码段37000H33000HAX【例例3-223-22】 MOV AX,COUN

14、T2 MOV AX,COUNT2* *ESI ESI 或或 MOV AX,COUNT+2MOV AX,COUNT+2* *ESI)ESI)COUNTCOUNT为为1616位位移量的符号地址。位位移量的符号地址。如果如果(DS)=3000h (DS)=3000h (ESI)=2000h(ESI)=2000hCOUNT = 3000HCOUNT = 3000HPA = 37000HPA = 37000H7.有比例因子的基址加变址寻址有比例因子的基址加变址寻址 基址寄存器和变址寄存器须为规定的基址寄存器和变址寄存器须为规定的3232位寄存器位寄存器. .【例例3-24】 MOV AX,1000HEB

15、XESI*2若若(DS) = 2100H,(EBX) = 0158H,(ESI) = 1000H则则 EA = 3158H PA = 24158H【例例3-24】 MOV AX,1000HEBXESI*2若若(DS) = 2100H,(EBX) = 0158H,(ESI) = 1000H则则 EA = 3158H PA = 24158H3.4 x86微处理器的指令系统微处理器的指令系统参数说明参数说明SEGREG(段寄存器):包括(段寄存器):包括CS,DS,ES,SSREG(寄存器):包括(寄存器):包括AX,BX,CX,DX,SP,BP,SI,DIMEM(存储器操作数寻址):直接寻址,寄存

16、器间(存储器操作数寻址):直接寻址,寄存器间接寻址,基址寻址,变址寻址接寻址,基址寻址,变址寻址, 基址加变址寻址基址加变址寻址. 明确指令是字节操作还是字操作明确指令是字节操作还是字操作 寄存器具有明确的字节和字类型寄存器具有明确的字节和字类型mov al,bx;alds:bxmov dx,bp;dxss:bp+0mov dx,bp+4 ;dxss:bp+4mov es,si;esds:si 不存在存储器向不存在存储器向 存储器的传送指令存储器的传送指令mov si,dsmov ax,ds;axdsmov es,ax;esaxds 对段寄存器的操作不灵活对段寄存器的操作不灵活立即数立即数段寄

17、存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器8088指令系统除串操作指令外,不允许两个操作数指令系统除串操作指令外,不允许两个操作数都是存储单元(存储器操作数)都是存储单元(存储器操作数)MOV buf2, buf1;非法指令,;非法指令,修正修正:;假设;假设buf2和和buf1是两个字变量是两个字变量;mov ax,buf1;mov buf2,ax;假设;假设buf2和和buf1是两个字节变量是两个字节变量;mov al,buf1;mov buf2,al【例例

18、3-32】LEA BX,TABLEBXSI指令执行前指令执行前(BX)=0200H (SI) = 0020H TABLE = 0000H(DS) = 4000H (40220H) = 23H (40221H) = 00H执行后:执行后: BX = 0220HLEALEA图示图示7856004000:00004000:0200【例例3-333-33】 LEA SI,BX LEA SI,BX BX = 0200H BX = 0200H SI = 0200H SI = 0200H比较比较:MOV SI,BX:MOV SI,BX【例例3-343-34】 DS: ADDR1 DF 1234567890A

19、BHDS: ADDR1 DF 1234567890ABH ADDR2 DD 1A2B3C4DHADDR2 DD 1A2B3C4DH CS: .CS: . LES EBX, ADDR1 LES EBX, ADDR1; ES=1234H, EBX=567890ABH; ES=1234H, EBX=567890ABH LDS SI, ADDR2 LDS SI, ADDR2 ; DS=1A2BH, SI=3C4DH; DS=1A2BH, SI=3C4DH格式:格式: LDS REG,SRC执行的结果:执行的结果:REG (SRC)DS (SRC+2)000200402000:00002000:0200

20、SIDS【例例3-35】 LDS SI,0200LES(LFS,LGS,LSS)LES(LFS,LGS,LSS)指针送寄存器和指针送寄存器和ES(FS,GS,SS)ES(FS,GS,SS)指令指令格式:格式:LES REG,SRC执行的结果:执行的结果:REG (SRC)ES (SRC+2)000200402000:00002000:0200SIES【例例3-36】 LES SI,0200OFDFIFTFSFZFAFPFCFD7D6D4D2D0AHOFDFIFTFSFZFAFPFCFD7D6D4D2D0例例:利用利用LAHF和和SAHF指令将指令将CF标志清零标志清零.格式:格式:XCHG O

21、PR1,OPR2 ;B/W执行的操作执行的操作: (OPR1 ) (OPR2) 其中:其中: OPR1与与OPR2须是等长操作数须是等长操作数, 且且PR1,OPR2必须有一个是寄存器。必须有一个是寄存器。1、寄存器与寄存器之间交换数据、寄存器与寄存器之间交换数据2、寄存器与存储器之间交换数据、寄存器与存储器之间交换数据3、不能在存储器与存储器之间对换数据、不能在存储器与存储器之间对换数据【例例3-37】 XCHG AX,BX执行前:执行前:(AX) = 1234H,(BX) = 3400H执行后:执行后: (AX ) = 3400H,(BX) = 1234HOPR1OPR2【例例3-38】已

22、知已知(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H。分析指令分析指令XCHG BX,BP+SI后的结果。后的结果。 SS:BP+SI=2F00:0246H PA=2F246H (2F246H)=4154H (BX)=6F30HXCHG BX,BP+SI(BX)=4154H(2F246H)= 6F30H图图 3.10 BSWAP演示演示XLAT指令的功能【例例3-39】将将0F的十六进制数转换为七段码管显示的代码。的十六进制数转换为七段码管显示的代码。并求出并求出NUM单元的数相对应的字形编码单元的数相对应的字形编码字形字形

23、 0123456789ABCDEF编码编码(H)3F065B4F666D7D077F6F777C395E 7971XLATXLAT指令图示指令图示3FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H4000:00004000:02004000:020A(BX) = 0200(AL) = 0AHBX+AL =020AHALSSSSSPSP (栈顶)(栈顶)存储器存储器高地址高地址堆栈段堆栈段演示演示PUSH指令的功能演示演示POP指令的功能入栈指令示意图入栈指令示意图【例3-40】 PUSH AX (AX) = 3125H (SS)=5000H (SP

24、)=2500H执行操作:(SP-2) (AX)执行过程:1、SP=SP-1 (SP) (AH)2、SP=SP-1 (SP) (AL)【例3-41】 POP BX (BX) = 0000H(SS)=5000H (SP)=24FEH执行操作:执行操作:(BX)(SP)SP SP+2出栈指令示意图出栈指令示意图PSW低8位PSW高8位栈顶栈顶新栈顶新栈顶OFDFIFTFSFZFAFPFCF新栈顶新栈顶栈顶栈顶PSW低8位PSW高8位xxOFDFIFTFSFZFAFPFCFDX.AX8234 7856H1234 8998H8000 4491H1468 BD5DHinc si;sisi1dec byte

25、 ptr si;sisi1【例例3-43】有两个双精度数分别存储在有两个双精度数分别存储在DX,AX和和BX,CX寄存器中。其中寄存器中。其中DX和和BX存放的是高位字,存放的是高位字,AX和和CX存放的是低位字。用执行实现两个双精度存放的是低位字。用执行实现两个双精度数的加法操作。数的加法操作。执行前:执行前: (DX)=0002H (AX)= 0F365H (CX)=0E024H (BX)=0005H指令:指令: ADD AX,CX ADC DX,BX执行图示:执行图示:ADCADC例子图示例子图示ADD AX,CX ;(AX)=0F365H (CX)=0E024H执行后执行后: AX =

26、 0D389H ,SF=1,ZF=0, CF=1, OF =0 ADC DX,BX 执行前:执行前: (DX)=0002H (BX)=0005H执行后执行后: DX = 0008H【例例3-44】已知已知(BX)=0A24H 求求 INC BX INC WORD PTR BX执行后的结果执行后的结果.BXBX+111140A2411150A24【例例3-45】 SUB SI+14H,0136H执行前:执行前: (DS) = 3000H (SI)=0040H (30054H)=4336H执行后:执行后: (30054H)=4200H,SF=0,ZF=0,CF=0,OF=0【例例3-463-46】

27、 SBB SI+14H,0136H SBB SI+14H,0136H执行前:执行前: (DS) = 3000H(DS) = 3000H,(SI)=0040H(SI)=0040H,(30054H)=4336H, CF=1(30054H)=4336H, CF=1执行后:执行后: (30054H)=41FFH(30054H)=41FFH【例例3-47】已知已知(BX)=0A24H求求 DEC BX DEC WORD PTR BX后的结果后的结果BXBX-11A140A241A130A24【例例3-48】 NEG BX执行前:执行前: (BX)= 0100H执行后:执行后: (BX) = FF00H【

28、例【例3-50】求执行下列指令后求执行下列指令后, AX、DI、BX值。值。MOV AX, 1234H MOV DI, 1234H MOV BX, 3456HvCMPXCHG DI, BX vCMPXCHG DI, BX 执行,因为执行,因为DI=AX1234H, 则将则将SRC送送DST,所以,所以DI=3456执行,因为执行,因为(DI3456H)(AX1234),则将,则将DST送送AX,AX=3456执行完以上指令后执行完以上指令后AX=3456, DI=3456H, BX=3456H. 问题:问题: 设设X,Y,Z均为双精度数,它们分别存放在地址范均为双精度数,它们分别存放在地址范围

29、为围为XX+3;YY+3; ZZ+3的存储单元中,存放时高位的存储单元中,存放时高位字在高地址,低位字在低地址中。用程序完成下列算式,字在高地址,低位字在低地址中。用程序完成下列算式,并将结果存储在并将结果存储在WW+3单元中。单元中。 W X+Y+24 - Z综合例子综合例子( (加减法加减法) )程序程序MOV AX,XMOVDX,X+2ADDAX,YADCDX,Y+2ADDAX,24ADCDX,0SUBAX,ZSBBDX,Z+2MOVW,AXMOVW+2,DXAL*操作数操作数AX操作数操作数*EAX操作数操作数*IMULIMUL【例例3-52】 MOV BX,-6 IMUL BX,5I

30、MULIMUL【例例3-53】 MOV EAX,32 IMUL EBX,EAX,4CBWCBW图示图示000010 000 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0100000 001 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 【例例3-61】设有两个以设有两个以ASC|码表示的十进制代码码表示的十进制代码7=37H,5=35H,求出其有效数相加后的分离式求出其有效数相加后的分离式BCD码码,存入存入AX中中. MOV AH,00H ; 执行执行AAA之前,应使之前,应使AH=0 MOV AL,37H ADD AL,35H ;两个两个ASCII 码十进制数相

31、加码十进制数相加 AAA ; AAD 未组合十进制数除之前调整指令未组合十进制数除之前调整指令 例例, , JMP DD PTR BXSIJMP DD PTR BXSI例例, DS:ADDR DD 12345678H ; 32位转移地址位转移地址.CS: 对对DS初始化初始化JMP ADDR ; 5678H IP ; 1234H CS记忆方法记忆方法:G:大于大于,L:小于小于,E:等于等于【例例3-67】假设假设X为某值且存放在寄存器为某值且存放在寄存器AL中,中,求出函数值求出函数值f(x)并存放在并存放在AH中。中。 1, X0f(x)= 0, X=0 ,X0f(x)= 0, X=0 ,

32、X0E8BD0AIP (EA)CS (EA)例:例: ROLEAX,16 ;实现高低;实现高低16位的互换。位的互换。 【例例3-71】 MOVEBX,0F333EE00H BSREAX,EBX ;Z标标=0,EAX=0000001FH=31 BSF EAX,EBX ;Z标标=0,EAX=00000009H基本型串比较指令功能示意图基本型串比较指令功能示意图REPE CMPSB(b) REPNE CMPSB REPE CMPSW 示意图示意图 REPNE CMPSW 示意图示意图 REPE CMPSD REPNE CMPSD基本型串搜索指令功能示意图基本型串搜索指令功能示意图CLCCLC指令指

33、令格式:格式:CLC 执行的操作:执行的操作:CF 0OFDFIFTFSFZFAFPFCF0CMCCMC指令指令格式:格式:CMC 执行的操作:执行的操作:CF 取反取反CFOFDFIFTFSFZFAFPFCF1 00 1STCSTC指令指令格式:格式:STC 执行的操作:执行的操作:CF 1OFDFIFTFSFZFAFPFCF1CLICLI指令指令格式:格式:CLI 执行的操作:执行的操作:IF 0OFDFIFTFSFZFAFPFCF0STISTI指令指令格式:格式:STI 执行的操作:执行的操作:IF 1OFDFIFTFSFZFAFPFCF1CLDCLD指令指令格式:格式:CLD 执行的操

34、作:执行的操作:DF 0OFDFIFTFSFZFAFPFCF0STDSTD指令指令格式:格式:STD 执行的操作:执行的操作:DF 1OFDFIFTFSFZFAFPFCF1NOPNOP指令指令格式:格式:NOP 执行的操作:不做任何工作,其机器码占用一个字节执行的操作:不做任何工作,其机器码占用一个字节单元。单元。用途:在调试程序中用于占用一定的单元,以便于可用途:在调试程序中用于占用一定的单元,以便于可以插补一些指令或消除一些指令。以插补一些指令或消除一些指令。NOP 其机器码为其机器码为90HHLTHLT指令指令格式:格式:HLT执行的操作:该指令执行后,可以使机器暂执行的操作:该指令执行后,可以使机器暂停工作,使处理器停工作,使处理器CPU处于停机状态,以便处于停机状态,以便于等待一次外部中断的到来,中断结束后,于等待一次外部中断的到来,中断结束后,程序继续执行,程序继续执行,CPU继续工作。继续工作。外部同步指令外部同步指

温馨提示

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

评论

0/150

提交评论