- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 80x86汇编语言程序设计
习题与答案
1、指出以下数据定义伪指令所分配的字节数(8086系统)。
(1)DATA1 DB 10,?,‘A’
(2)DATA2 DW 10 DUP(2,3 DUP(?),1)
(3)DATA3 DB ‘HELLO,WORLD!’,‘$’
(4)DATA4 DW DATA4
解:(1)3字节; (2)100字节; (3)13字节; (4)2字节。
2、指出以下数据定义伪指令所分配的字节数(80386系统)。
(1)DATA1 DF 12,34,56
(2)DATA2 DF DATA2
(3)DATA3 DQ 0,10 DUP(?)
(4)DATA4 DT 0,1,2
解:(1)18字节; (3)6字节; (3)88字节; (4)30字节。
3、指出以下指令中哪些是无效的,并说明原因。
(1)ADDR DB $
(2)DATA DB F0H,12H
(3)1_DATA DW 1234H
(4)@VAR DW VAR1 ;VAR1为一个字节变量
(5)MOV AX,[10-VAR1] ;VAR1为一个字变量
(6)MOV BX,[VAR2*2+1] ;VAR2为一个字变量
解:
(1)非法,地址计数器$是32位数;
(2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;
(3)非法,变量名非法,不能以数字开头;
(4)合法;
(5)非法,地址表达式不能是“常数-地址”;
(6)非法,地址表达式不能出现乘法。
4、假设已定义数据段如下:
DATA SEGMENT
ORG 100H
DATA1 DB 10 DUP(1,2,3)
DATA2 DW DATA1,$
DATA ENDS
且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。请指出以下指令执行后,相应的寄存器中的内容。
(1)MOV AX,WORD PTR DATA1 ;(AX)=?
(2)MOV BX,DATA2 ;(BX)=?
(3)MOV CX,DATA2+2 ;(CX)=?
(4)MOV DX,OFFSET DATA2 ;(DX)=?
(5)MOV SI,SEG DATA1 ;(SI)=?
(6)MOV DI,LENGTH DATA1 ;(DI)=?
(7)MOV SP,TYPE DATA1 ;(SP)=?
(8)MOV BP,SIZE DATA2 ;(BP)=?
解:
(1)(AX)=0201H; (2)(BX)=0100H; (3)(CX)=0120H; (4)(DX)=011EH;
(5)(SI)=1234H; (6)(DI)=000AH; (7)(SP)=0001H; (8)(BP)=0002H。
5、在8086系统下,编写完整程序,实现从键盘上输入8位二进制数,从显示器上显示相应的16进制数,例如从键盘上输入,应在显示器上显示“12H”。
解:参考程序:
DATA SEGMENT
MSG1 DB Input binary number(ESC to exit):,$
MSG2 DB 0AH,0DH,Input error!,0AH,0DH,$
DATA ENDS
OUTPUT MACRO ASC ;定义输出一个字符的宏
MOV DL, ASC
MOV AH, 2
INT 21H
ENDM
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA
MOV DS, AX
AGAIN: LEA DX, MSG1
MOV AH, 9
INT 21H ;提示输入信息
MOV CX, 8 ;输入8位二进制数
MOV BL, 0
L: MOV AH, 1
INT 21H
SHL BL, 1
CMP AL, 1BH ;ESC键退出
JZ DONE
CMP AL, 0 ;输入“0”
JZ NEXT
CMP AL, 1 ;输入“1”
JNZ ERROR ;输入其他则出错
INC BL
NEXT: LOOP L
OUTPUT 0AH
OUTPUT 0DH
PUSH BX
MOV CL, 4
SHR BL, CL
CALL TRAN ;显示高4位对应的16进制数
POP BX
AND BL, 0FH
CALL TRAN ;显示低4位对应的16进制数
OUTPUT H
OUTPUT 0AH
OUTPUT 0DH
JMP AGAIN
ERROR: LEA DX, MSG2
MOV AH, 9
INT 21H
JM
文档评论(0)