西工大微机原理试题例题讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(10)错误。F000H是一个以字母打头的数字, 为 了和变量区别,应书写成0F000H,所以应改为ADD AX, 0F000H
1 0 0 1 1 0 1 0(9AH
—10 1 1 1 100(0BCH
1 1 0 1 1 1 1 0(有借位)
所以,ZF=Q PF=1, CF=1 SF=1, OF=0
(3)对于“与”、“或”和“异或”逻辑运算, 将使CF=Q OF=0而SF、ZF和PF则根据运算结果 设置。
AND AL,BL
1 0 0 1 1 0 1 0(9AH
例3.2(AL)=9AH(BL)=0BCH当分别进
行下列指令运算后,请写出标志位的内容
(1)
ADDAL,
BL;
ZF=
,PF=_
,CF=,
SF=
OF=。
(2)
SUBAL,
BL;
ZF=
,PF=_
,CF=,
SF=
OF=。
(3)
ANDAL,
BL;
ZF=
,PF=_
,CF=,
SF=
OF=。
(4)
OR AL,
BL;
(2)正确。
(3)错误。堆栈操作不能进行字节操作。应改为
PUSH AX
(4)错误。不能给CS赋值。可以改为别的段寄 存器,比如POP DS
(5)错误。I/O指令中只能用DX作为间接寻址的 寄存器,应该改为OUT DX, AL。
(6)错误。段寄存器之间不能传送数据。要完成 该语句的功能,应改为MOV AX,DS
人1 0 1 1 1 1 0 0(0BCH
1 0 0 1 1 0 0 0
所以,ZF=0, PF=0, CF=Q SF=1 OF=0
(3)OR AL,BL
1 0 0 1 1 0 1 0(9AH
V 1 0 1 1 1 1 0 0(0BCH
1 0 1 1 1 1 1 0
所以,ZF=0, PF=1, CF=Q SF=1, OF=0
EA=(BX)+100H=2100H物理地址=20000H+ 2100H=22100H
目的操作数为寄存器寻址
(4)源操作数为寄存器寻址
目的源操作数在数据段中,为寄存器间 接寻址。
EA=(SI)=4000H
物理地址=20000H+ 4000H=24000H
(5)源操作数在数据段中,为相对基址变址 寻址。
(3)PUSH AL
(4)POP CS
(5)OUT CX AL
(6)MOV ES DS
(7)JMP BYTE PTR [SI]
(8)MOV AX [SI+DI]
(9)MOV [BX+BP],AX
(10)ADD AX, F000H
解(1)错误。OFFSEELOC!是指变量BLOCK勺偏 移地址,不能送往8位的寄存器中,应改为MOV BX OFFSET BLOCK
(4)XOR AL,BL
1 0 0 1 1 0 1 0(9AH
二1 0 1 1 1 1 0 0(0BCH
0 0 1 0 0 1 1 0
所以,ZF=0, PF=Q CF=Q SF=Q OF=0
例3.3判断下列指令是否正确,若有错误, 请指出原因,并改正。
(1)MOV BL,OFFSET BLOCK
(2)LEA DI,[BX+SI]
ZF=
亠PF=_
,CF=,
SF=
OF=。
(5)
XORAL,
BL;
ZF=
,PF=_
,CF=,
SF=
OF=。

(1)
ADD
AL
,BL
1 0
0 1 1 0
1 0
(9AH

1 0 1 1
1 1 0 0
(0BCH
0 1
0 1 0 1
1 0
(有进位)
所以
,ZF=0
PF=1,
CF=1
SF=Q
OF=1
(2)SUB AL,BL
【评注】注意操作数的位置,是立即数还是在 寄存器中,或在存储器中。若为存储器寻址,还要 判断操作数是在数据段中还是在堆栈段中。
注意区别直接寻址方式和立即寻址方式,(1)
中源操作数是[1234H],该指令是要把数据段中1234H单元的内容送AL,并非将1234H送AL,是一 种直接寻址方式。
使用寄存器间接寻址时应注意和寄存器寻址方 式的区别。(2)中源操作数是[BX],BX寄存器中的 内容2000H是一个地址,该指令是要把数据段中以2000H单元为首的一个双字数据送EDX寄存器中,并 非将2000H送EDX所以该指令源操作数为寄存器间 接寻址。
EA=(BX)+ (SI) +BUF=2000H- 4000H
+1000H=7000H
物理地址=20000H+ 7000H=27000H目的操作数为寄存器寻址
(6)由于源操作数方括号中出现了BP,所以
源操作数在堆栈段中,为寄存器相对寻址。
EA=(BP)+1234H=0200卅1234H=1434H物理地址=30000H+ 1434H=31434H目的操作数为寄存器寻址
第三章80X86寻址方式和指令系统
二、典型题解析
例3.1设DS=2000H SS=3000H BP=0200H SI=4000H,BUF=1000H,EAX=00001000H,
EBX=00002000H假设按16位实模式操作,确定下 列每条指令访问内存的物理地址,并且指出源操作 数及目的操作数的寻址方式。
(1)MOV AL,[1234H]
(2)MOV EDX [BX]
(3)MOV CL,[BX+100H]
(4)MOV [SI],EBX
(5)MOV AH,BUF[BX^ SI]
(6)MOV EAX [BP+1234H]
分析:DS给出数据段的段基址,因此,数据段 的起始物理地址为(DSX10H=20000H ES给出堆 栈段的段基址,因此,堆栈段的起始物理地址为(SS)X10H=30000H若是存储器寻址,根据寻址方式的 不同,可求出相应的有效EA再加上段的起始物理 地址即为将访问的内存单元的物理地址。
解(1)源操作数在数据段中,为直接寻址方式
EA=1234H
物理地址=200OOH+ 1234H=2123பைடு நூலகம்H
目的操作数为寄存器寻址
(2)源操作数在数据段中,为寄存器间接寻 址。
EA=(BX) =2000H
物理地址=20000H+
2000H=22000H
目的操作数为寄存器寻址
(3)源操作数在数据段中,为寄存器相对寻 址。
MOV ES AX
(7)错误。转移地址必须是16位或32位。
可改为JMP WORD PTR [SI]
(8)错误。SI和DI两个变址不能同时出现在方
括号里,可以是一个基址加一个变址,可改为MOV
AX [BX+DI]
(9)错误。BX和BP两个基址不能同时出现在方 括号里。可以改为MOV [BX+SI],AX
相关文档
最新文档