微机原理期末考试习题选讲资料

更新时间:2023-10-18 06:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理习题选讲

江苏大学机械学院测控系

2011年9月

存储器数据组织

例4-3

VAR1 DB 32H, ’ABC’

VAR2 DW 1234H,40H, ’AB’ DD 12345678H DB ?,11000011B ARRY1 DB 2DUP(0,1) ARRY2 DW 2DUP (?,1)

本例所定义的数据存储器分配情况如图示。

: : : VAR1 32H 41H ‘A’ 42H ‘B’ 43H ‘C’ VAR2 34H 1234H 12H 40H 0040H 00H 42H ‘B’ 41H ‘A’ 78H 12345678H 56H 34H 12H -- 预留的存储单元 C3H 11000011B ARRY1 00H 第一组字节方式的0,1 01H 00H 第二组字节方式的0,1 01H ARRY2 -- 第一组字方式的?,1 -- 01H 00H -- 第二组字方式的?,1 -- 01H 00H : : : 寻址方式与指令系统

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 MOV CX,AX

MOV BX,DX MOV AX,DATAZ

CWD ADD AX,CX ADC DX,BX

SUB AX,1000 SBB DX,0

MOV CX,70 IDIV CX

;计算X*Y ;积保存到BX:CX ;将DATAZ扩展成32位 ;计算和 ;计算差 ;计算商和余数

汇编程序基本设计方法

简单(顺序)程序

例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: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

开始 初始化 取段基址 →DS 源操作数指针 →SI 目的操作数指针→DI 被加数 → AX 被加数 +加数→ AX 结果送Z 结束

本文来源:https://www.bwwdw.com/article/js5f.html

Top