汇编语言程序设计 下载本文

内容发布更新时间 : 2024/11/17 5:20:57星期一 下面是文章的全部内容请认真阅读。

汇编语言程序设计

二、主观题(共15道小题)

11. 用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767

参考答案:

(1) 369=1 0111 0001B=171H

(2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH

(4) 32767=111 1111 1111 1111B=7FFFH

12. 将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234

参考答案:

(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91

(3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660

13. 完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F

参考答案:

(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893

14. 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么? (1) D8 (2) FF

参考答案:

(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216; (2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。

15. 下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么? (1) 4F (2) 2B (3) 73 (4) 59

参考答案:

(1) 4FH表示的十进制数为 79,4FH表示的字符为O; (2) 2BH表示的十进制数为 43,2BH表示的字符为 +; (3) 73H表示的十进制数为115,73H表示的字符为s; (4) 59H表示的十进制数为89,59H表示的字符为Y。

16. 微机的输入/端口号通常是由DX的端口号。试问可直接由指令指定的I/O

可直接由指令指定的I/O个。

17. 在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢?

参考答案:

3017:000A、3015:002A和3010:007A的存储单元的物理地址都是3017AH。

18. ,(进制数的最高位为字母,则应在其前加一个0) (IP)=2B40H该程序的

第一个字的物理地址是0AAA40H

二、主观题(共15道小题)

11. 假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指

令是非法的?它们的错误是什么? (1) MOV BP, AL ;

(2) MOV WORD_OP [BX+4*3][DI], SP (3) MOV WORD_OP1, WORD_OP2 ; (4) MOV AX, WORD_OP1[DX] ; (5) MOV SAVE_WORD, DS

(6) MOV SP, SS:DATA_WORD [BX][SI] (7) MOV [BX][SI], 2 ; (8) MOV AX, WORD_OP1+WORD_OP2 (9) MOV AX, WORD_OP1-WORD_OP2+100 (10) MOV WORD_OP1, WORD_OP1-WORD_OP2

参考答案:

假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?

(1) MOV BP, AL ;错,寄存器类型不匹配 (2) MOV WORD_OP [BX+4*3][DI], SP

(3) MOV WORD_OP1, WORD_OP2 ;错,不能都是存储器操作数 (4) MOV AX, WORD_OP1[DX] ;错,DX不能用于存储器寻址 (5) MOV SAVE_WORD, DS

(6) MOV SP, SS:DATA_WORD [BX][SI]

(7) MOV [BX][SI], 2 ;错,[BX][SI]未指出数据类型 (8) MOV AX, WORD_OP1+WORD_OP2 (9) MOV AX, WORD_OP1-WORD_OP2+100 (10) MOV WORD_OP1, WORD_OP1-WORD_OP2

12. 假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:

(1) ADD VAR1, VAR2 ; (2) SUB AL, VAR1 ; (3) JMP LAB [SI] ; (4) JNZ VAR1 ; (5) JMP NEAR LAB ;

参考答案:

假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:

(1) ADD VAR1, VAR2 ;不能都是存储器操作数 (2) SUB AL, VAR1 ;数据类型不匹配

(3) JMP LAB [SI] ;LAB是标号而不是变量名,后面不能加[SI] (4) JNZ VAR1 ;VAR1是变量而不是标号 (5) JMP NEAR LAB ;应使用NEAR PTR

13. 有符号定义语句如下:

BUFF DB 1, 2, 3, ‘123’ EBUFF DB 0

L EQU EBUFF - BUFF 问L的值是多少?

参考答案:L=6。

14. 假设程序中的数据定义如下:

LNAME DB 30 DUP (?) ADDRESS DB 30 DUP (?) CITY DB 15 DUP (?) CODE_LIST DB 1, 7, 8, 3, 2

(1) 用一条MOV指令将LNAME的偏移地址放入AX。 (2) 用一条指令将CODE_LIST的头两个字节的内容放入SI。

(3) 用一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。

参考答案:

(1) MOV AX, OFFSET LNAME (2) MOV SI, WORD PTR CODE_LIST

(3) CODE_LENGTH EQU -CODELIST;此语句必须放在CODELIST语句之后

15. 用CALL显示字符T写出指令将一个字数据从端口1000H的存储器采用分段

方式管理,每个段最多可以有___ ___个这样大小且互相不重叠的段。 参考答案: 64K 16

25. 已知[X-Y]补=7001H,[X+Y]补=0001H,则[2X]补= H。

参考答案:7002H

二、主观题(共21道小题)

11. 文件结尾的部分信息就没有被写入磁盘,从而造成写入的文件不完整。

12. 下面的ASCIZ串有什么错误?

PATH_NAME DB ‘C:\\PROGRAMS\\TEST.DAT’

参考答案:

此ASCIZ串的最后少了一个全0字节,应改为: PATH_NAME DB ‘C:\\PROGRAMS\\TEST.DAT’, 0

13. 据定义如下:

X1 DB 10H,100,-1 X2 DW 10H,100,-1 X3 DD ? COUNT EQU X3-X1

变量COUNT的值是 ,其表示的意义

是 。

参考答案: 9 X1和X2两个变量所占内存字节单元的个数。(写为内存单元的个数也正确。如果写为字单元则为错误)

14. 执行指令

MOV AX,0 MOV AL,09H ADD AL,4

3H,在ADD指令之后加一条 指令。

若要获得结果AX=0103H,则在ADD指令之后,加一条 指令,若要获得结果AL=1

参考答案:

DAA AAA

15. 实现AL中高四位置1的指令为 。

实现AL中高四位取反的指令

为 。

参考答案:

OR AL,0F0H XOR AL,0F0H

16. 为中断向量区。

参考答案:

◎最低1K字节 ◎ (0-3FFH) ◎0000开始的 1K 字节

以上三个答案都正确

17. X、Y、Z是双精度数,他们分别存放在X、X+2、Y、Y+2、Z、Z+2的内存单元中,高位字存放在高位地址中,低位字存放在低位地址中,下列指令序列实现X+Y+24-Z W。并且用W和W+2单元存放运算结果:

MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2 ADD AX,24 SUB AX,Z SUB DX,Z+2 MOV W,AX MOV W+2,DX 分析以上指令序列,指出程序中出现的错

误: ;

参考答案:

在ADD和SUB两条指令之间加上 ADC DX,0(仅仅写出这条指令就正确)

把SUB DX,Z+2改成SBB DX,Z+2(仅仅写出这条指令就正确)

DATA SEGMENT

MESS1 DB ‘PERSONAL COMPUTER’ DATA ENDS EXTRA SEGMENT

MESS2 DB 17 DUP(?)

EXTRA ENDS CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE, DS:DATA,ES:EXTRA START: PUSH DS

SUB AX,AX PUSH AX LEA SI,MESS1 LEA DI,MESS2 CLD REP MOVSB RET MAIN ENDP CODE ENDS END START

18. 在数据段中有一个字符串,其长度是17,要求把他们传送到附加段中的一个缓冲区。

以上是完整的程序段,请分析主过程,修改主过程中的错误。

1、 ;

2、 ;