1 / 17

第 3 部分 常用指令和寻址方式

第 3 部分 常用指令和寻址方式. Assembly Language Programming. 习题. 1 已知 :BX=1234H,BP=5678H, SI=1357H,DS=0925H, SS=0468H,CS=4B10H 。指出下述指令中存储器操作数的有效地址和实际地址。. (1) MOV AL,[BX]. (6) MOV CL,SS:[SI+50H]. (2) MOV AH,[BP]. (7) MOV BL,DS:[BP+30H]. (3) MOV BH,CS:[SI]. (8) MOV [BP+SI+30H],AL.

Download Presentation

第 3 部分 常用指令和寻址方式

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第3部分 常用指令和寻址方式 Assembly Language Programming

  2. 习题 1 已知:BX=1234H,BP=5678H, SI=1357H,DS=0925H, SS=0468H,CS=4B10H。指出下述指令中存储器操作数的有效地址和实际地址。 (1) MOV AL,[BX] (6) MOV CL,SS:[SI+50H] (2) MOV AH,[BP] (7) MOV BL,DS:[BP+30H] (3) MOV BH,CS:[SI] (8) MOV [BP+SI+30H],AL (4) MOV DL,[SI+10H] (9) MOV [BX+SI-40H],AH (5) MOV CH,[BP+20H] (10) MOV CS:[BX+SI],DH

  3. 1 已知:BX=1234H,BP=5678H, SI=1357H,DS=0925H, SS=0468H,CS=4B10H。指出下述指令中存储器操作数的有效地址和实际地址。 解答这类问题,首先要明确哪一个操作数是存储器操作数,进而确定其寻址方式,并根据寻址方式计算有效地址。要计算实际地址,则必须明确操作数处于哪一个逻辑段中,再根据相应段寄存器的内容得到段基址,加上有效地址即为实际地址。 (1) MOV AL,[BX] 解:该指令的源操作数为存储器操作数,其寻址方式为寄存器间接寻址,故BX的内容1234H即为有效地址。操作数所处段为隐含段数据段,故段基址为09250H,所以实际地址=段基址+有效地址=09250H+1234H=0A484H。

  4. 1 已知:BX=1234H,BP=5678H, SI=1357H,DS=0925H, SS=0468H,CS=4B10H。指出下述指令中存储器操作数的有效地址和实际地址。 (2) MOV AH,[BP] 解:该指令的源操作数为存储器操作数,其寻址方式为基址寻址,故有效地址为BP的内容5678H。操作数所处段为隐含段堆栈段,故段基址为04680H,所以实际地址=段基址+有效地址=04680H+5678H=09CF8H。 (3) MOV BH,CS:[SI] 解:该指令的源操作数为存储器操作数,其寻址方式为寄存器间接寻址,故SI的内容1357H即为有效地址。操作数所处段为代码段,故段基址为4B100H,所以实际地址=段基址+有效地址=4B100H+1357H=4C457H。

  5. 1 已知:BX=1234H,BP=5678H, SI=1357H,DS=0925H, SS=0468H,CS=4B10H。指出下述指令中存储器操作数的有效地址和实际地址。 (4) MOV DL,[SI+10H] 解:该指令的源操作数为存储器操作数,其寻址方式为变址寻址,故有效地址为SI的内容1357H+10H=1367H。操作数所处段为隐含段数据段,故段基址为09250H,所以实际地址=段基址+有效地址=09250H+1367H=0A5B7H。 (5) MOV CH,[BP+20H] 解:该指令的源操作数为存储器操作数,其寻址方式为基址寻址,故有效地址为BP的内容5678H+20H=5698H。操作数所处段为隐含段堆栈段,故段基址为04680H,所以实际地址=段基址+有效地址=04680H+5698H=09D18H。

  6. 1 已知:BX=1234H,BP=5678H, SI=1357H,DS=0925H, SS=0468H,CS=4B10H。指出下述指令中存储器操作数的有效地址和实际地址。 (6) MOV CL,SS:[SI+50H] 解:该指令的源操作数为存储器操作数,其寻址方式为变址寻址,故有效地址为SI的内容1357H+50H=13A7H。操作数所处段为堆栈段,故段基址为04680H,所以实际地址=段基址+有效地址=04680H+13A7H=05A27H。 (7) MOV BL,DS:[BP+30H] 解:该指令的源操作数为存储器操作数,其寻址方式为基址寻址,故有效地址为BP的内容5678H+30H=56A8H。操作数所处段为数据段,故段基址为09250H,所以实际地址=段基址+有效地址=09250H+56A8H=0E8F8H。

  7. 1 已知:BX=1234H,BP=5678H, SI=1357H,DS=0925H, SS=0468H,CS=4B10H。指出下述指令中存储器操作数的有效地址和实际地址。 (8) MOV [BP+SI+30H],AL 解:该指令的目标操作数为存储器操作数,其寻址方式为基址变址寻址,故有效地址为5678H+1357H+30H=69FFH。操作数所处段为隐含段堆栈段,故段基址为04680H,所以实际地址=段基址+有效地址=04680H+69FFH=0B07FH。 (9) MOV [BX+SI-40H],AH 解:该指令的目标操作数为存储器操作数,其寻址方式为基址变址寻址,故有效地址为1234H+1357H-40H=254BH。操作数所处段为隐含段数据段,故段基址为09250H,所以实际地址=段基址+有效地址=09250H+254BH=0B79BH。

  8. 1 已知:BX=1234H,BP=5678H, SI=1357H,DS=0925H, SS=0468H,CS=4B10H。指出下述指令中存储器操作数的有效地址和实际地址。 (10) MOV CS:[BX+SI],DH 解:该指令的目标操作数为存储器操作数,其寻址方式为基址变址寻址,故有效地址为1234H+1357H=258BH。操作数所处段为代码段,故段基址为4B100H,所以实际地址=段基址+有效地址=4B100H+258BH=4D68BH。

  9. 2 已知数据定义如下,则给定的程序段执行后,寄存器AX的内容是多少? 1.DATA DB 10,20,30,40,50 ENTER DW 3 : : MOV BX,OFFSET DATA ADD BX,ENTER MOV AX,[BX] AX= 0AH 14H 1EH 28H 32H 03H 00H DATA ENTER 3228H

  10. 3 已知数据定义如下,则给定的程序段执行后,寄存器AX的内容是多少? DATA 0AH 00H 14H 00H 1EH 00H 28H 00H 32H 00H 03H 00H 2.DATA DW 10,20,30,40,50 ENTER DW 3 : : MOV BX,OFFSET DATA MOV SI,ENTER MOV AX,[BX+SI] AX= ENTER 1E00H

  11. 4 已知: AX=1234H,BX=100H,CX=0302H,SI=3405H,CF=1,当前数据段中 (3305H)=26H,(3306H)=37H,(3405H)=78H, (3406H)=69H,(3505H)=35A6H,DX=3205H,指出下述各条指令执行后目标地址中的数值。 ;AX=100H ; DL=03H ; AX=6978H ; AL=69H ; BX=3726H ; DX=3726H ; (3505H)=0302H ; (100H)=1234H (1) MOV AX,BX (2) MOV DL,CH (3) MOV AX,[SI] (4) MOV AL,[SI+1] (5) MOV BX,[SI-100H] (6) MOV DX,-200H[BX][SI] (7) MOV [BX][SI],CX (8) MOV [BX],AX 26H 37H : 78H 69H : A6H 35H 3305H 3306H : 3405H 3406H : 3505H 3506H

  12. 5 条件同上题,指出下述指令执行后的结果和标志位状态。 (AX=1234H,BX=100H,CX=0302H,SI=3405H,CF=1) 指 令 结果 OF SF ZF AF PF CF (1) ADD AX,BX (2) SUB BH,CL (3) CMP AL,[SI-100H] (4) AND AL,[SI][BX] (5) NOT BX (6) OR BL,CH (7) ADD [SI][BX],AX (8) XOR AH,AH 注:这里×表示状态不确定 26H 37H : 78H 69H : A6H 35H 3305H 3306H : 3405H 3406H : 3505H 3506H

  13. 5 条件同上题,指出下述指令执行后的结果和标志位状态。 (AX=1234H,BX=100H,CX=0302H,SI=3405H,CF=1) 指 令 结果 OF SF ZF AF PF CF (1) ADD AX,BX 1334H 0 0 0 0 0 0 (2) SUB BH,CL 0FFH 0 1 0 1 1 1 (3) CMP AL,[SI-100H] 34H 0 0 0 1 0 0 (4) AND AL,[SI][BX] 24H 0 0 0 × 1 0 (5) NOT BX 0FEFFH 标志位不受影响 (6) OR BL,CH 03H 0 0 0 × 1 0 (7) ADD [SI][BX],AX 47DAH 0 0 0 0 0 0 (8) XOR AH,AH 00H 0 0 1 × 1 0 注:这里×表示状态不确定 26H 37H : 78H 69H : A6H 35H 3305H 3306H : 3405H 3406H : 3505H 3506H

  14. 6 条件同上题,指出下述移位指令执行后目标地址中的内容及标志位状态。 (AX=1234H,BX=100H,CX=0302H,SI=3405H,CF=1) • 指 令 结果 OF SF ZF PF CF • SHR BH,1 • SAR SI,CL • (3) ROR CH,1 • (4) ROL BX,CL • (5) SAL AX,CL • (6) SAR BYTE PTR[SI],CL • (7) RCR BYTE PTR[BX][SI],1 • (8) SHL WORD PTR[SI],1 • 注:这里×表示状态不确定,空白表示不受影响。 26H 37H : 78H 69H : A6H 35H 3305H 3306H : 3405H 3406H : 3505H 3506H

  15. 6 条件同上题,指出下述移位指令执行后目标地址中的内容及标志位状态。 (AX=1234H,BX=100H,CX=0302H,SI=3405H,CF=1) • 指 令 结果 OF SF ZF PF CF • SHR BH,1 00H 0 0 1 1 1 • SAR SI,CL 0D01H 0 0 0 0 0 • (3) ROR CH,1 81H 1 1 • (4) ROL BX,CL 0400H 0 0 • (5) SAL AX,CL 48D0H 0 0 0 0 0 • (6) SAR BYTE PTR[SI],CL 1EH 0 0 0 0 0 • (7) RCR BYTE PTR[BX][SI],1 0D3H 0 0 • (8) SHL WORD PTR[SI],1 0D2F0H 1 1 0 1 0 • 注:这里×表示状态不确定,空白表示不受影响。 26H 37H : 78H 69H : A6H 35H 3305H 3306H : 3405H 3406H : 3505H 3506H

  16. 7 编写完成下列功能的小程序段。 (1)将寄存器AL的第3,4位变反,其余位保持不变。 解: XOR AL,18H (2)将寄存器AL的第3,4位清零,其余位保持不变。 解: AND AL,0E7H (3)将寄存器AL的第3,4位置1,其余位保持不变。 解: OR AL,18H

  17. 7 编写完成下列功能的小程序段。 (4)DX和AX联合存放一个32位整数(DX存放高16位),将该数据逻辑左移一位。 解: SHL AX,1 RCL DX,1 (5)内存单元MEMB存放着一个8位的数据,将它的高4位和低4位互换。 解: MOV CL,4 ROR MEMB,CL

More Related