《《汇编语言程序设计》第2次作业.doc》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》第2次作业.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、单项选择题(只有一个选项正确,共12道小题)1. 若PORT_VAL5,则执行指令MOV BX,(PORT_VAL LT 5) AND 20) OR (PORT_VAL GE 5) AND 30)后BX的内容是: ( )。(A) 20 (B) 30 (C) 5 (D) 10 2. 假设(AL)=, MOV CL,4 SHL AL,CL 执行上述指令后CF和AL的内容是( )。(A) AF=0, (AL)=(B) AF=0, (AL)=(C) AF=1, (AL)=(D) AF=1, (AL)= 3. 下面指令序列测试BH中的数是否为奇数, 若为奇数则转移至K1处,横线处的指令应为( )。T
2、EST BH,01HK1 (A) JNE(B) JS(C) JZ(D) JC4. 已知标号NEXT与指令 MOV AX,TYPE NEXT在同一个段内,则AX的值为( )。(A) 2 (B) -1 (C) 0 (D) 1 5. DATA SEGMENTBUF DB 1,2,3,4,5COUNT EQU DATA ENDS在以上数据段中COUNT的值为( )(A) 4 (B) 6 (C) 5 (D) 3 6. 下列是8位二进制数的补码,其中真值最大的是( )。(A) (B) (C) (D) 7. 16位有符号数的补码所表示的十进制数的范围是( )。(A) -32768+32767(B) -655
3、35+65536(C) 065535(D) -32767+327688. 下面的XCHG指令中,语法正确的是( )。(A) XCHG AL,DS(B) XCHG AL,0FH(C) XCHG BL,BX(D) XCHG BUF1,BUF29. LDS SI,ES:2000H指令的全部功能是( )。(A) 把地址2000H字单元内容送DS,把2002H字单元内容送SI(B) 把地址2000H字单元的内容送SI(C) 把地址2000H字单元内容送SI,把2002H字单元内容送DS(D) 把地址2000H送SI10. 数据定义如下:BUF1 DB 10BUF2 DW 20 DUP(?)实现将BUF1
4、单元的内容与BUF2开始的第三个字节单元内容相比较的指令是( )。(A) MOV AL,BUF1CMP AL,BUF22(B) MOV AL,BUF1CMP AL BUF23(C) MOV AL,BUF1CMP AL,BYTE PTR BUF22(D) CMP BUF1,BYTE PTR BUF2311. 某数据段如下:DATA SEGMENTORG 20HX DB 12HY DW 789AHDATA ENDS则Y 单元的偏移址是( )。(A) 20H(B) 21H(C) 12H(D) 012. MOV AL,-1 NEG ALXOR AL,65上述程序段执行后,AL中的内容是( )。(A)
5、61H(B) 01H(C) 64H(D) 40H 二、主观题(共21道小题)(主观题请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。在线只需提交客观题答案。)13. 在0624H单元内有一条二字节JMP SHORT OBJ指令,如其中位移量为(1) 27H,(2) 6BH,(3) 0C6H,试问转向地址OBJ的值是多少?14. 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1) MOV AX,
6、 0ABH (2) MOV AX, BX(3) MOV AX, 100H (4) MOV AX, VAL(5) MOV AX, BX (6) MOV AX, ES:BX(7) MOV AX, BP (8) MOV AX, SI(9) MOV AX, BX+10 (10) MOV AX, VALBX(11) MOV AX, BXSI (12) MOV AX, VALBXSI15. 设(DS)=1B00H,(ES)=2B00H,有关存储单元的内容如上右图所示。请写出两条指令把字变量X装入AX寄存器。16. 求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF的
7、值。(1) 1234H (2) 4321H (3) CFA0H (4) 9D60H17. 指出下列指令的错误: (1) MOV AH, BX ;(2) MOV BX, SI ;(3) MOV AX, SIDI ;(4) MOV MYDAT BXSI, ES:AX ;(5) MOV BYTE PTR BX, 1000 ;(6) MOV BX, OFFSET MYDAT SI ;(7) MOV CS, AX ;(8) MOV ECX, AX ;18. 下面哪些指令是非法的?(假设OP1,OP2是已经用DB定义的变量)(1) CMP 15, BX ;(2) CMP OP1, 25(3) CMP OP
8、1, OP2 ;(4) CMP AX, OP1 ;19. 假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?(1) MOV BP, AL ;(2) MOV WORD_OP BX+4*3DI, SP(3) MOV WORD_OP1, WORD_OP2 ;(4) MOV AX, WORD_OP1DX ;(5) MOV SAVE_WORD, DS(6) MOV SP, SS:DATA_WORD BXSI(7) MOV BXSI, 2 ;(8) MOV AX, WORD_OP1+WORD_OP2(9) MOV AX, WORD_OP1-WORD_OP2+1
9、00(10) MOV WORD_OP1, WORD_OP1-WORD_OP220. 假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:(1) ADD VAR1, VAR2 ;(2) SUB AL, VAR1 ;(3) JMP LAB SI ;(4) JNZ VAR1 ;(5) JMP NEAR LAB ;21. 有符号定义语句如下:BUFF DB 1, 2, 3, 123EBUFF DB 0L EQU EBUFF - BUFF问L的值是多少?22. 假设程序中的数据定义如下:LNAME DB 30 DUP (?)ADDRESS DB 30 DUP (?)CITY DB 1
10、5 DUP (?)CODE_LIST DB 1, 7, 8, 3, 2(1) 用一条MOV指令将LNAME的偏移地址放入AX。(2) 用一条指令将CODE_LIST的头两个字节的内容放入SI。(3) 用一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。23. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。24. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。25. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。26. 下面的程序段有错吗?若有,请指出错误。CRAY PROCPUSH
11、AXADD AX, BXRETENDP CRAY27. 写一段子程序SKIPLINES,完成输出空行的功能。空出的行数在AX寄存器中。28. 编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。29. 写出分配给下列中断类型号在中断向量表中的物理地址。(1) INT 12H (2) INT 830. 用CALL指令来模拟实现INT 21H显示字符T的功能。31. 写出指令将一个字节数据输出到端口25H。32. 写出指令将一个字数据从端口1000H输入。33. 在ADDR单元中存放着数据Y,试编写一程序把Y中1的个数存入COUNT单元中。参考答案:本次作
12、业是本门课程本学期的第2次作业,注释如下:一、单项选择题(只有一个选项正确,共12道小题)1. 若PORT_VAL5,则执行指令MOV BX,(PORT_VAL LT 5) AND 20) OR (PORT_VAL GE 5) AND 30)后BX的内容是: ( )。(A) 20(B) 30(C) 5(D) 10你选择的答案: A 正确正确答案:A解答参考:2. 假设(AL)=, MOV CL,4 SHL AL,CL 执行上述指令后CF和AL的内容是( )。(A) AF=1, (AL)=(B) AF=0, (AL)=(C) AF=1, (AL)= (D) AF=0, (AL)=你选择的答案:
13、C 正确正确答案:C解答参考:3. 下面指令序列测试BH中的数是否为奇数, 若为奇数则转移至K1处,横线处的指令应为( )。TEST BH,01HK1 (A) JNE(B) JZ(C) JS(D) JC你选择的答案: A 正确正确答案:A解答参考:4. 已知标号NEXT与指令 MOV AX,TYPE NEXT在同一个段内,则AX的值为( )。(A) 0(B) 1(C) 2(D) -1你选择的答案: B 正确正确答案:B解答参考:5. DATA SEGMENTBUF DB 1,2,3,4,5COUNT EQU DATA ENDS在以上数据段中COUNT的值为( )(A) 3(B) 5(C) 4(
14、D) 6你选择的答案: B 正确正确答案:B解答参考:6. 下列是8位二进制数的补码,其中真值最大的是( )。(A) (B) (C) (D) 你选择的答案: D 正确正确答案:D解答参考:7. 16位有符号数的补码所表示的十进制数的范围是( )。(A) -32767+32768(B) -32768+32767(C) -65535+65536(D) 065535你选择的答案: B 正确正确答案:B解答参考:8. 下面的XCHG指令中,语法正确的是( )。(A) XCHG AL,DS(B) XCHG BL,BX(C) XCHG AL,0FH(D) XCHG BUF1,BUF2你选择的答案: B 正
15、确正确答案:B解答参考:9. LDS SI,ES:2000H指令的全部功能是( )。(A) 把地址2000H送SI(B) 把地址2000H字单元的内容送SI(C) 把地址2000H字单元内容送SI,把2002H字单元内容送DS(D) 把地址2000H字单元内容送DS,把2002H字单元内容送SI你选择的答案: C 正确正确答案:C解答参考:10. 数据定义如下:BUF1 DB 10BUF2 DW 20 DUP(?)实现将BUF1单元的内容与BUF2开始的第三个字节单元内容相比较的指令是( )。(A) CMP BUF1,BYTE PTR BUF23(B) MOV AL,BUF1CMP AL,BY
16、TE PTR BUF22(C) MOV AL,BUF1CMP AL,BUF22(D) MOV AL,BUF1CMP AL BUF23你选择的答案: B 正确正确答案:B解答参考:11. 某数据段如下:DATA SEGMENTORG 20HX DB 12HY DW 789AHDATA ENDS则Y 单元的偏移址是( )。(A) 0(B) 20H(C) 21H(D) 12H你选择的答案: C 正确正确答案:C解答参考:12. MOV AL,-1 NEG ALXOR AL,65上述程序段执行后,AL中的内容是( )。(A) 40H (B) 64H(C) 01H(D) 61H你选择的答案: B 正确正
17、确答案:B解答参考:(注意:若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。在线只需提交客观题答案。)二、主观题(共21道小题)13. 在0624H单元内有一条二字节JMP SHORT OBJ指令,如其中位移量为(1) 27H,(2) 6BH,(3) 0C6H,试问转向地址OBJ的值是多少?参考答案:(1) OBJ=0624H+02H+27H=064DH(2) OBJ=0624H+02H+6BH=0691H(3) OBJ=0624H+02H+0C6H=05ECH ;C6H对应的负数为-3AH(向上转移,负位移量)14. 假定(DS)=2000H,(ES)=2100H,(S
18、S)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1) MOV AX, 0ABH (2) MOV AX, BX(3) MOV AX, 100H (4) MOV AX, VAL(5) MOV AX, BX (6) MOV AX, ES:BX(7) MOV AX, BP (8) MOV AX, SI(9) MOV AX, BX+10 (10) MOV AX, VALBX(11) MOV AX, BXSI (12) MOV AX, VALBXSI参考答案:(1)
19、 立即方式; 操作数在本条指令中(2) 寄存器寻址方式; 操作数为 (BX)=0100H(3) 直接寻址方式; PA=20100H(4) 直接寻址方式; PA=20050H(5) BX寄存器间接寻址方式; PA=20100H(6) 附加段BX寄存器间接寻址方式; PA=21100H(7) BP寄存器间接寻址方式; PA=15010H(8) SI寄存器间接寻址方式; PA=200A0H(9) BX寄存器相对寻址方式; PA=20110H(10) BX寄存器相对寻址方式; PA=20150H(11) BX和SI寄存器基址变址寻址方式; PA=201A0H(12) BX和SI寄存器相对基址变址寻址方
20、式; PA=201F0H15. 设(DS)=1B00H,(ES)=2B00H,有关存储单元的内容如上右图所示。请写出两条指令把字变量X装入AX寄存器。参考答案:MOV BX, 2000HMOV AX, ES:BX16. 求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF的值。(1) 1234H (2) 4321H (3) CFA0H (4) 9D60H参考答案:(1) 和为74D4H;SF=0,ZF=0,CF=0,OF=0(2) 和为A5C1H;SF=1,ZF=0,CF=0,OF=1(3) 和为3240H;SF=0,ZF=0,CF=1,OF=0(4) 和
21、为0000H;SF=0,ZF=1,CF=1,OF=017. 指出下列指令的错误: (1) MOV AH, BX ;(2) MOV BX, SI ;(3) MOV AX, SIDI ;(4) MOV MYDAT BXSI, ES:AX ;(5) MOV BYTE PTR BX, 1000 ;(6) MOV BX, OFFSET MYDAT SI ;(7) MOV CS, AX ;(8) MOV ECX, AX ;参考答案:(1) MOV AH, BX ;寄存器类型不匹配(2) MOV BX, SI ;不能都是存储器操作数(3) MOV AX, SIDI ;SI和DI不能一起使用(4) MOV M
22、YDAT BXSI, ES:AX ;AX寄存器不能使用段超越(5) MOV BYTE PTR BX, 1000 ;1000超过了一个字节的范围(6) MOV BX, OFFSET MYDAT SI ;MYDAT SI已经是偏移地址,不能再使用OFFSET(7) MOV CS, AX ;CS不能用作目的寄存器(8) MOV ECX, AX ;两个操作数的数据类型不同18. 下面哪些指令是非法的?(假设OP1,OP2是已经用DB定义的变量)(1) CMP 15, BX ;(2) CMP OP1, 25(3) CMP OP1, OP2 ;(4) CMP AX, OP1 ;参考答案:(1) CMP 1
23、5, BX ;错,立即数不能作为目的操作数(2) CMP OP1, 25(3) CMP OP1, OP2 ;错,不能都是存储器操作数(4) CMP AX, OP1 ;错,类型不匹配,应为CMP ax, word ptr op119. 假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?(1) MOV BP, AL ;(2) MOV WORD_OP BX+4*3DI, SP(3) MOV WORD_OP1, WORD_OP2 ;(4) MOV AX, WORD_OP1DX ;(5) MOV SAVE_WORD, DS(6) MOV SP, SS:DAT
24、A_WORD BXSI(7) MOV BXSI, 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*3DI, SP(3) MOV WORD_OP1, WORD_OP2 ;错,不能都是存储器操作数(4) MOV AX, WORD_OP1DX ;错,D
25、X不能用于存储器寻址(5) MOV SAVE_WORD, DS(6) MOV SP, SS:DATA_WORD BXSI(7) MOV BXSI, 2 ;错,BXSI未指出数据类型(8) MOV AX, WORD_OP1+WORD_OP2(9) MOV AX, WORD_OP1-WORD_OP2+100(10) MOV WORD_OP1, WORD_OP1-WORD_OP220. 假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:(1) ADD VAR1, VAR2 ;(2) SUB AL, VAR1 ;(3) JMP LAB SI ;(4) JNZ VAR1 ;(5)
26、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 PTR21. 有符号定义语句如下:BUFF DB 1, 2, 3, 123EBUFF DB 0L EQU EBUFF - BUFF问L的值是多少?参考答案:L6。22. 假设程序中的数据定义如下:LNAM
27、E 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 ;此语句必须放在CODE_LIST语句之后23. 试编写一个汇编语言程序,要
28、求对键盘输入的小写字母用大写字母显示出来。参考答案:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, a ;输入字符z吗?JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET24. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。参考答案:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, a ;输入字
29、符z吗?JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET25. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。参考答案:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, a ;输入字符z吗?JA STOPDEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显
30、示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET26. 下面的程序段有错吗?若有,请指出错误。CRAY PROCPUSH AXADD AX, BXRETENDP CRAY参考答案:程序有错。改正如下:CRAY PROCADD AX, BXRETCRAY ENDP ;CRAY是过程名,应放在ENDP的前面27. 写一段子程序SKIPLINES,完成输出空行的功能。空出的行数在AX寄存器中。参考答案:程序如下:CSEG SEGMENTSKIPLINES PROC FARASSUME CS: CSEGBEGIN: PUSH CXPUSH DXMOV CX,
31、AXDISP: MOV DL, 0DH ;显示回车换行,即输出空行MOV AH, 2 ;显示一个字符的DOS调用INT 21HMOV DL, 0AHMOV AH, 2 ;显示一个字符的DOS调用INT 21HLOOP DISPPOP DXPOP CXRETSKIPLINES ENDPEND28. 编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。参考答案:宏定义如下:CLRB MACRO N, CFILMOV CX, NCLDMOV AL, ;取空格符的ASCII码LEA DI, CFILREP STOSBENDM29. 写出分配给下列中断类型号在中
32、断向量表中的物理地址。(1) INT 12H (2) INT 8参考答案:(1) 中断类型号12H在中断向量表中的物理地址为00048H、00049H、0004AH、0004BH;(2) 中断类型号8在中断向量表中的物理地址为00020H、00021H、00022H、00023H。30. 用CALL指令来模拟实现INT 21H显示字符T的功能。参考答案:MOV AH, 2MOV DL, TPUSH DSPUSHF ;因中断服务程序的返回指令是IRET,而不是RETMOV BX, 0MOV DS, BXCALL DWORD PTR21H*4 ;用CALL指令调用21H的中断服务程序POP DS3
33、1. 写出指令将一个字节数据输出到端口25H。参考答案:指令为:OUT 25H, AL32. 写出指令将一个字数据从端口1000H输入。参考答案:指令为: MOV DX, 1000HIN AX, DX33. 在ADDR单元中存放着数据Y,试编写一程序把Y中1的个数存入COUNT单元中。参考答案:DATA SEGMENTADDR DW YCOUNT DW ?DATA ENDS CODE SEGMENTMAIN PROC FARASSUME CS:CODE ,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AX MOV CX,0 MOV AX,ADDR REPEAT:TEST AX,0FFFFH JZ EXIT JNS SHIFT INC CX SHIFT:SHL AX,1 JMP RETEAT EXIT:MOV COUNT,CX RETMAIN ENDPCODE ENDSEND START