- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机原理习题选讲
江苏大学机械学院测控系
2011年9月存储器数据组织
例4-3
VAR1 DB 32H, ’ABC’
VAR2 DW 1234H,40H, ’AB’
DD
DB ?
ARRY1 DB 2DUP(0,1)
ARRY2 DW 2DUP (?,1)
本例所定义的数据存储器分配情况如图示。寻址方式与指令系统
已知(DS)=1000H,(ES)=2000H,(SS)=1100H,(SI)=1010H,(BX)=0200H,(BP)=0600H,请指出下列指令的源操作数字段是什么寻址方式?源操作数字段的物理地址是什么?
MOV AL,[2400H]
MOV AX,[BP]
ADD AX,ES:[BP+10]
MOV AL,[BX+SI+25]
解:
该指令的源操作数字段是直接寻址方式
物理地址PA=(DS)×16+2400H=1000H×16+2400H=12400H
该指令的源操作数字段是寄存器间接寻址方式
物理地址PA=(SS)×16+(BP)=1100H×16+0600H=11600H
该指令的源操作数字段是寄存器相对寻址方式
物理地址PA=(ES)×16+(BP)+10=2000H×16+0600H+000AH=2060AH
该指令的源操作数字段是寄存器相对基址变址寻址方式
物理地址PA=(DS)×16+(BX)+(SI)+25
=1000H×16+0200H+1010H+0019H=11229H
请指出下列指令中得错误:
(1)MOV DS,12H (2)MOV AH,400
(3)MOV BP,AL (4)MOV AX,[SI][DI]
(5)OUT 257H,AL (6)MOV BYTE PTR[BX],1000
(7)MOV [BX],[SI] (8) MOV 4[DI],02
(9) MOV [BX+SI+3],IP (10)PUSH BH
解: (1)不能直接向DS中送立即数
(2)400超过了一个字节的范围
(3)寄存器类型不匹配
(4)SI、DI不能同时使用
(5)直接寻址的输出指令中,端口号只能在0~0FFH范围内
(6)1000超过了一个字节的范围
(7)源和目的操作数不能同时为存储器操作数
(8)源操作数与目的操作数的类型不明确
(9)IP不能作源和目的操作数
(10)PUSH是字操作指令
请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、SF、OF、PF和AF的状态:
MOV AX,7896H
ADD AL,AH
ADD AH,AL
ADD AL,0F2H
解: (1)MOV AX,7896H执行后,AX=7896H,即AH=78H,AL=96H,各标志位保持不变。
(2)ADD AL,AH执行后,AH=78H ,AL=0EH,即AX=780EH,所以各标志位状态为:CF=1,ZF=0,SF=0,OF=0,AF=0,PF=0。
(3)ADD AH,AL执行后,AH=86H,AL=0EH,即AX=860EH,所以各标志位状态为:CF=0,ZF=0,SF=1,OF=1,AF=1,PF=0。
(4)ADD AL,0F2H执行后,AH=86H,AL=00H,即AX=8600H,所以各标志位状态为:CF=1,ZF=1,SF=0,OF=0,AF=1,PF=1。
X、Y、Z均为16位带符号数,请编写一个程序段计算表达式(X*Y+Z-1000)/70的值。
解:假设X、Y和Z分别存放在名为DATAX、DATAY和DATAZ的变量单元中。计算结果保存在AX中,余数保存在DX中,则程序段如下:
MOV AX,DATAX
IMUL DATAY ;计算X*Y
MOV CX,AX
MOV BX,DX ;积保存到BX:CX
MOV AX,DATAZ
CWD ;将DATAZ扩展成32位
ADD AX,CX ;计算和
ADC DX,BX
SUB AX,1000 ;计算差
SBB DX,0
MOV CX,70 ;计算商和余数
IDIV CX
汇编程序基本设计方法
简单(顺序)程序
例4-25 有X,Y两个16位数3456H和0ABCDH,求两数之和,并将结果送到Z单元。
程序清单:
DATA SEGMENT
X DW 3456H
Y DW 0ABCDH
Z DW 00
DATA ENDS
CODE SEGMENT
ASSUME DS:
文档评论(0)