汇编语言课后答案第3章

2020-04-17 19:58

第3章 习 题

3.1 填空题

(1) 汇编语言指令由两部分组成:___操作码__________表示指令的操作内容,_____操

作数________表示指令在执行过程中所用到的数据信息。

(2) 在16位CPU的寄存器间接寻址方式中,若用__SI_____、__DI______、__BX______

作为间接寻址的寄存器,则操作数在____DS___段中;若用___BP____作为间接寻址的寄存器,则操作数在 ___SS_____段中。

(3) 在16位CPU的基址变址寻址方式中,基址寄存器可以为__BX_____或__BP______,

变址寄存器可以为___SI____或___DI_____,若用__BX_____作为基址寄存器,则操作数在____数据段___段中;若用___BP____作为基址寄存器,则操作数在__堆栈______段中。

(4) 设AX=2000H,BX=2300H,则在执行了指令CMP AX,BX后,标志CF=__1_______、

ZF=____0____。

(5) 当执行指令DIV BL后,被除数在_AX_______中,所得商在_______AL__中,余数在

_____AH___中。

3.2 选择题

1.若栈顶的物理地址为12000H,当执行完指令PUSH BX后,栈顶的物理地址为(D ) A. 12001H B. 12002H C. 11FFFH D. 11FFEH 2.在程序运行过程中,确定下一条指令的物理地址的计算表达式是(B ) A. DS×16+SI B. CS×16+IP C. SS×16+SP D. ES×16+DI 3.下面指令执行后,将改变寄存器AX内容的指令是( B)

A. OR AX,AX B. AND AX,BX C. TEST AX,01H D.CMP AX,1 4.设AH=79H,当执行指令ADD AH,98H后,标志位CF和0F的值分别为(D ) A. 0,0 B. 0,1 C. 1,0 D. 1,1 5.设AL=0A0H,要使结果AL=50H,应执行的指令是( D )

A. AND AL,0F0H B. NOT AL C. OR AL,0F0H D. XOR AL,0F0H 6.设AH=68H,当执行指令SUB AH,72H后,标志位CF和SF的值分别为(D ) A. 0,0 B. 0,1 C. 1,0 D. 1,1 7.要使寄存器AL的最低位置1,应使用下面的指令( C )

A. AND AL,01H B. XOR AL,01H C. OR AL,01H D. NOT AL 8.要使BL寄存器的最高位清0,应使用下面的指令( D )

A. AND BL,80H B. OR AL,7FH C. OR BL,80H D. AND BL,7FH 9. 将寄存器AX的内容乘以2的正确指令序列是( A )

A. SHL AX,1 B. SHR AX,1 C. ROL AX,1 D. RCR AX,1 10.下列指令执行后,寄存器AL中的内容为( C ) MOV AL,90H ADD AL,AL ADC AL,AL

A. 20H B. 240H C. 41H D. 241H

3.3 说明下列指令中源操作数的寻址方式。(X1为内存变量,VALUE为常量)

(1) MOV AX,100 ;立即寻址

(2) MOV AX,[BX][SI];基址变址寻址 (3) MOV BX,AX ;寄存器寻址

(4) MOV CX,VALUE[BX];寄存器相对寻址 (5) MOV EBX,ES:[1000H] ;直接寻址 (6) MOV EBX,ECX;寄存器寻址 (7) MOV EBX,ECX;寄存器寻址 (8) MOV BX,[BP];寄存器间接寻址 (9) MOV EBX,2000H;立即寻址

(10) MOV EAX,[EBX+2*ECX];比例变址寻址 (11) MOV AX,X1;直接寻址

(12) MOV AX,VALUE[BX][DI];相对基址变址寻址 (13) MOV SI,[EAX+10H];寄存器相对寻址 (14) MOV DX,[EAX+EBX];比例变址寻址

3.4 试说明下列指令执行完后,寄存器AX或EAX的内容。已知DS=1000H,BX=2100H,SI=02H,DI=01H,ES=SS=2000H,BP=2000H,(12100H)=10H,(12101H)=30H,(12102H)=50H,(12103H)=70H,(22000H)=20H,(22001H)=40H,(22002H)=60H,常量VALUE=01H。 已知DS=1000H

BX=2100H SI=02H DI=01H

ES=SS=2000H

BP=2000H

常量VALUE=01H。

MOV AX,2000H;AX=2000H MOV AX,BX;AX=2100H

MOV AX,[2102H] ;AX=7050H MOV AX,[BX] ;AX=3010H

MOV AX,[BX+01H] AX=5030H MOV AX,[BX][SI] ;AX=7050H MOV AX,[BP][DI] ; AX=6040H MOV AX,ES:[BP] ;AX=4020H

(1) (2) (3) (4) (5) (6) (7) (8)

(9) MOV AX,VALUE[BX][SI] ; AX=0070H

VALUE[BX][SI]= [01H+2100H +02H]=[2103H]=70H

(10) MOV EAX,[2100H] ;EAX=70503010H

3.5 判断下列指令是正确还是错误,错误的请说明原因

(1) MOV DS,1000H ;ⅹ不能为DS赋值

(2) MOV 1000H,AX;ⅹ 立即数不能为目的操作数 (3) MOV EAX,BX;ⅹ 类型不匹配 (4) ADD AX,[CX];√

(5) MOV AX,[BX][BP] ;ⅹ不匹配 (6) MOV BX,AL; ⅹ不匹配

(7) MOV CL,300; ⅹ超出数的表示范围 (8) MOV CS,DS;ⅹ不能为CS赋值 (9) PUSH AL;ⅹ 只能是字或双字

(10)MOV [BX],[SI];ⅹ操作数不能同时是内存操作数

3.6 执行下列指令后,IP和CS的值是多少?已知DS=3000H,BX=4000H,SI=01H,字节单元(24000H)=11H,(34001H)=22H,(34002H)=33H,(34003H)=44H,(34004H)=55H。 (1) JMP BX;IP=4000H

(2) JMP DWORD PTR [BX];IP= 2211H CS=4433H

(3) JMP WORD PTR [BX+01H] ;IP=3322 H,CS=当前段

(4) JMP WORD PTR [BX+SI+02H];IP=5544H, CS=当前段 (5) JMP DWORD PTR [BX] ; IP= 2211H CS=4433H (6) JMP DWORD PTR [BX][SI] ;IP= 3322 H CS=5544H

3.7 下列指令执行后,寄存器AX中的值相同吗?两条传送指令源操作数的寻址方式相同吗?

X1 EQU 100H X2 DB 100H … …

MOV AX,X1 MOV AX,X2

答:AX相同,第一条指令是立即寻址;第二条指令是存储器寻址

3.8 设SS=2000H,SP=1000H,CX=1122H,DX=3344H,执行下列指令序列后AX、BX的值是多少?画出堆栈变化示意图。

PUSH CX

PUSH DX 44H 20FFCH POP AX 33H 20FFDH POP DX 22H 20FFEH 答:AX=3344H;DX=1122H. 11H 20FFFH SP→ 21000H SP→ 执行指令后 3.9 编写程序段,用16位指令将内存中两个双字变量DATA1和DATA2相加,结果保存到内存双字变量DATA3中。

3.10 写出计算下列表达式的指令序列:

(1) (2) (3) (4) W ← X+(Y-Z),X、Y、Z、W为字节变量 W ← X-(Y+10)-(Z+100),X、Y、Z、W为字变量

计算(X*Y-10)/Z,W 1←商,W 2←余数,X、Y、Z、W为无符号字变量 W ←((X-Y)/100+200)*Z,X、Y、Z为带符号字变量,W为双字变量

3.11 编程完成下列功能的程序段

(1) 将寄存器AL的第0、1位清0;

MOV AL,0FFH; AND AL, FcH

(2) 将寄存器AL的第3、4位置1;

MOV AL,00H OR AL,18H

(3) 将寄存器BL的第4,5位变反;

MOV BL,OFFH; XOR BL,30H

(4) 将寄存器AL和BL的内容组合在一起,放在寄存器CX中,AL为高字节,BL为

低字节。 MOV CH,0 MOV CL,BL MOV AH,AL MOV AL,0 OR CX,AX 或

MOV CL,8 SHL AX,CL MOV BH,0 OR AX,BX MOV CX,AX

(5) 将内存字变量X1的两个字节互换

MOV AX, X1 MOV CL,4

ROL/ROR AX,CL

3.12 在内存缓冲区BUFFER中存有一个字符串,编写程序段将其中的第5个字符读到AL中,

其中的第10个字符读到CL中。

3.13 将寄存器AX清零有几种方法?写出具体的指令。

3.14 用16位指令实现:将寄存器对DX:AX中的双字左移3位。

3.15 设AX=5BH,CL=2,CF=1,试确定下列每条指令执行后AX和CF的值。

(1) SHR AX,CL;AX=16H CF=1 AX=5BH= 0000 0000 0101 1011B 0 CF SHR 0000 0000 0001 0110B 11;CF= 1 所以:AX=0016H;CF= 1 (2) SHL AX,CL

(3) SAR AX,CL;AH=16H CF=1 AX=5BH= 0000 0000 0101 1011B

SAR 0000 0000 0000 1011B 11; CF=1 CF

所以:AX=0016H;CF= 1 (4) ROR AX,CL

(5) RCR AX,CL; AX=0C016H;,CF=1 AX=5BH= 0000 0000 0101 1011B

CF

RCR 1100 0000 0001 0110 所以:AX=0C016H;CF= 1

(6) ROL AX,CL

(7) RCL AX,CL;AX=016CH,CF=0 AX=5BH= 0000 0000 0101 1011B CF

RCL 0000 0001 0110 1100

所以:AX=016CH,CF=0 (8) SAL AX,1

3.16 编写程序,将AL中的压缩BCD码转化成非压缩的BCD码,分别存放在BH和BL中。 3.17 分析下面的程序段执行后,寄存器AX和BX的内容分别是多少? MOV AX,1122H MOV BX,3344H PUSH AX PUSH BX POP AX POP BX

答:AX=3344H,BX=1122H

3.18 分析下面的程序段执行后,寄存器AX和BX的值分别是多少? MOV AX,1020H MOV BX,0CDEFH XOR AX,BX XOR AX,BX

3.19 分析下面的程序段执行后,寄存器AX和标志ZF的值分别是多少? MOV AX,BX NOT AX ADD AX,BX INC AX


汇编语言课后答案第3章.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:The Truth About Lying-3(全文翻译)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: