汇编语言程序设计
二、主观题(共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、 ;