微机原理期末考试习题选讲
- 格式:doc
- 大小:774.00 KB
- 文档页数:18
微机原理习题选讲
江苏大学机械学院测控系
2011年9月
存储器数据组织
例4-3
V AR1 DB 32H, ’ABC’
V AR2 DW 1234H,40H, ’AB’
DD 12345678H
DB ?,11000011B
ARRY1 DB 2DUP(0,1)
ARRY2 DW 2DUP (?,1)
本例所定义的数据存储器分配情况如图示。
寻址方式与指令系统
1.已知(DS)=1000H,(ES)=2000H,(SS)=1100H,(SI)=1010H,(BX)=0200H,(BP)=0600H,请指出
下列指令的源操作数字段是什么寻址方式?源操作数字段的物理地址是什么?
(1)MOV AL,[2400H]
(2)MOV AX,[BP]
(3)ADD AX,ES:[BP+10]
(4)MOV AL,[BX+SI+25]
解:
(1)该指令的源操作数字段是直接寻址方式
物理地址PA=(DS)×16+2400H=1000H×16+2400H=12400H (2)该指令的源操作数字段是寄存器间接寻址方式
物理地址PA=(SS)×16+(BP)=1100H×16+0600H=11600H
(3)该指令的源操作数字段是寄存器相对寻址方式
物理地址PA=(ES)×16+(BP)+10=2000H×16+0600H+000AH=2060AH (4)该指令的源操作数字段是寄存器相对基址变址寻址方式
物理地址PA=(DS)×16+(BX)+(SI)+25
=1000H×16+0200H+1010H+0019H=11229H
2.请指出下列指令中得错误:
(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是字操作指令
3.请写出如下程序片段中每条算术运算指令执行后标志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。
4.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单元。程序清单:
DA TA SEGMENT
X DW 3456H
Y DW 0ABCDH
Z DW 00
DA TA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE START: MOV AX,DATA
MOV DS ,AX
LEA SI,X
LEA DI,Y
MOV AX,[SI]
ADD AX,[DI]
MOV Z,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
例4-26把压缩BCD码表示的数M,转换为两个相应的ASCII码,结果存在紧跟M后的两
个内存单元,低位在前,高位在后。
DA TA1 SEGMENT
M DB ?
N DB 2DUP(00)
DA TA1 ENDS
CODE1 SEGMENT
ASSUME DS:DATA1,CS:CODE1
START:MOV AX, DATA1
MOV DS,AX
LEA SI,M
LEA DI,N
MOV AL,[SI]
AND AL,0FH
ADD AL,30H
MOV [DI],AL
MOV AL,[SI]
MOV CL,4
SHR AL,CL
ADD AL,30H
MOV [DI+1],AL
MOV AH,4CH
INT 21H
CODE1 ENDS
END START