汇编语言各章习题答案

发布时间 : 星期一 文章汇编语言各章习题答案更新完毕开始阅读

第一条使用段缺省是SS段,第二条使用段超越用DS段 8、根据所学指令,写出使AL置0的多种方法。 答:包括MOV AL,0 SUB AL,AL AND AL,0 XOR AL,AL 等

9、将DX、AX中存储的32位带符号数(DX中存放高16位)求补。 解:利用[X]求补=0-X实现。 MOV BX,AX MOV BX,0 SUB BX,AX MOV AX,0 SBB AX,DX MOV DX,AX MOV AX,BX

10、编写程序将AX中的16位无符号数与BL中的8位无符号数相加。 解:可以利用字节相加,实现字相加,注意高字节相加,要加上进位。 ADD AL,BL ADC AH,0

11、将AX中有0的各位对应的BX位取反,BX的其它位不变。 解:可利用异或指令实现。 NOT AX XOR BX,AX

12、编写一段程序,实现16位无符号数的计算:W=(X-2)/2+Y,设X、Y、Z、W是已定义的存储器操作数。

解:程序如下所示。 MOV AX,X SUB AX,2 SHR AX,1 ADD AX,Y MOV W,AX XOR DX,DX ADC DX,0

5

第四章

习题

1、某数据段中有如下定义: CNT1 EQU 20H CNT2 DW 20H

比较指令MOV AX,CNT1与MOV AX,CNT2的区别。 答:指令MOV AX,CNT1是立即数据寻址。 指令MOV AX,CNT2是直接寻址。

2、下列各题中有语法错误,请说明原因,并分别用两种方法修改。

① M1 DW 5060H ┇ MOV BL,M1 ② M2 EQU 10H ┇ MOV M2,AL ③ M3 DB 1234 ④ M4 DW ‘ABCD’

答:①类型不匹配。可将M1定义为字节(DB)或将BL换为字(BX)。 ②符号常量不能作为目的操作数。M2可用DB定义或将M2改为源操作数。 ③DB是定义字节变量。可将立即数改为字节或用DW定义字变量。 ④字符占一个字节。可用DB定义或用DW定义二个字符。

3、下面的数据定义中,包含数据’0102H’的字存储单元有多少个。

DB 10H DUP(1,2 DUP(2))

答:只有15个。因为空间里有16个01H、02H、02H,而字取值是高位地址存高字节,因此只有15个0102H字数据。

4、画出下面定义的数据段的存储结构图,分析有数据3000H的字存储单元有几个,它们的偏移量分别是多少?

DATA SEGMENT ORG 30H DA1 DB 0,’0’,30H,0,30H DW DA1 DATA ENDS

答:存储结构图如下图所示。3000H的字存储单元有2个,它们的偏移量分别是30H和33H。

6

30H 31H 32H 33H 34H 35H 36H 00H 30H 30H 00H 30H 30H 00H

5、设某数据段定义如下:

DATA SEGMENT NUM1=8 NUM2=NUM1+10H DA1 DB ‘IBM PC’ DB 0AH,0DH CNT EQU $-DA1 DA2 DW ‘IB’, ‘M ’,’PC’,0A0DH DATA ENDS

说明:DA1和DA2的偏移量是多少?,NUM2和CNT的值是多少?DA+5字节单元的内容是什么?DA1和DA2的内容相同吗?为什么?

答:DA1和DA2的偏移量分别是0H和6H。 NUM2=18H=24D,CNT=8。 DA1+5字节单元的内容是’C’

DA1和DA2的内容不相同。因为对于字存储,高位地址存高字节,因此DA2的字节存储顺序是:’B’、’I’、’ ‘、’M’、’C’、’P’、0DH、0AH,与DA1不同。

6、画出下面数据段定义的内存分配情况。(设DATA段地址为:0B70H)

DATA SEGMENT V1 DB 43,43H,’C’,’GOOD!’ V2 DW 1200H,43H,V1,’Hi’,2 DUP(1) V3 DD 12345678H,V2 DATA ENDS

答:内存分配情况如下所示。

00 01 02 03 04

2BH 43H ‘C’ ‘G’ ‘O’ 7

变量V1

05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ‘O’ ‘D’ ‘!’ 00H 12H 43H 00H 00H 00H ‘i’ ‘H’ 01H 01H 78H 56H 34H 12H 08H 00H 70H 0BH V2的段地址 V2的偏移地址 V2的起始地址 V1的偏移地址

7、有如下数据段定义:

DATA SEGMENT D1 DB 61H,53H D2 DW 1234H,45H D3 DW 20 DUP(0) DATA ENDS

若DATA段地址为0B68H,执行下列程序后,各寄存器的值各是多少? MOV AX,SEG D1 AX= 0B68H MOV BX,OFFSET D3 BX= 0006H MOV CL,TYPE D2 CL= 2 MOV CH,SIZE D2 CH= 2 MOV DL,LENGTH D2 DL= 1 MOV DH,SIZE D3 DH= 40 8、写出下列程序段汇编后的等效指令,程序执行后,寄存器AX、BX和CX

8

联系合同范文客服:xxxxx#qq.com(#替换为@)