- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 汇编语言程序格式 练习参考答案
1.
指令下列指令的错误
(1) MOV AH,BX (源操作数为字数据,目的操作数为字节数据)
(2) MOV [BX],[SI] (两操作数都是存储器操作数)
(3) MOV AX,[SI][DI] (基址变址寻址方式中,必须有一个是基址寄存器而另一个是变址寄存器)
(4) MOV MYDAT[BX][SI],ES:AX (寄存器寻址不存在段超越)
(5) MOV BYTE PTR[BX],1000 (目的操作数为字节类型,1000超出字节数表示范围)
(6) MOV BX,OFFSET MYDAT[SI] (OFFSET只能作用于简单变量,这里可以将MOV换为LEA)
(7) MOV CS,AX (MOV指令的目的操作数不允许是CS寄存器)
(8) MOV ECX,AX (源操作数为字数据,目的操作数为双字数据)
2.
(1)非法,目的操作数不能是立即数
(2)合法
(3)非法 两个操作数不能同时为内存操作数
(4)非法 两操作数的类型不匹配(源操作数为字节数据,目的操作数为字数据)
3.
(1) 非法,操作数类型不同(源操作数为字节数据,目的操作数为字数据)
(2) 合法。
(3) 非法,两操作数都是存储器操作数
(4) 非法,寄存器相对寻址中的16位寄存器只允许BX、BP、SI、DI
(5) 合法。
(6) 合法。
(7) 非法,由立即数,故目的操作数必须说明操作数类型,因此在作数为必须说明存储器的类型
(8) 非法,两个内存单元地址相加没有意义
(9) 合法。
(10)合法。
4.
(1)错误之处:两操作数都是存储器操作数
(2)错误之处:两操作数类型不同(源操作数为字数据,目的操作数为字节数据)
(3)一般来说,直接用标号LAB作为转移指令的操作数就行了。如果想以内存LAB[SI]作相对寻址,实现间接转移,那在LAB[SI]前面应加上WORD PTR(或 DWORD PTR),以表明段内间接转移或段间间接转移,但汇编中常把缺省情况认为是WORD PTR,因此,在很多的MASM版本中,这条指令都认为是正确的指令。尽管就指令本身来说是正确的,但以这种间接转移的结果很让人匪夷所思。
(4)条件转移指令后面只能是标号。
(5)格式不对,指令中的NEAR 应改为 NEAR PTR
5.
(1) 图4.1(a)
(2) 图4.1(b)
(b)
图4.1
6.
(1) X DW 5150H
(2) X DB 50H,51H
(3) X LABEL WORD
DF 5150H
(4) X LABEL WORD
DQ 5150H
(5) X LABEL WORD
DT 5150H
如果采用指令,将有很多方法将5150H送给字存储单元X
7.
DATASG SEGMENT
FLD1B DB personal computer
FLD2B DB 32
FLD3B DB 20H
FLD4B DB
FLD5B DB 32654
FLD6B DB 10 DUP (0)
FLD7B DB PART1,
DW 20
DB PART2
DW 50
DB PART3,
DW 14
FLD1W DW 0FFF0H
FLD2W DW
FLD3W DW FLD7B
FLD4W DW 5,6,7,8,9
FLD5W DW 5 DUP (0)
FLD6W DW FLD1W – FLD7B
DATASG ENDS
8.
PLENTH 的值为22,它表示分配给三变量PARTNO、PNAME和COUNT的存储单元的总字节数。
9.
L为EBUFF也BUFF两变量的地址差,即分配给BUFF变量的存储单元字节数,L=6
10. (1)MOV AX,OFFSET LNAME
(2)MOV SI,WORD PTR CODE_LIST
(3)CODE_LENGHT EQU $ - CODE_LIST
11.
DATA_SEG SEGMENT
DB 5
DATA_LIST DW -1, 0, 2, 5, 4, 5 DUP (?)
MAX DW ?
MIN DW ?
DATA_SEG END
文档评论(0)