微机原理作业参考答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3
(2)SAR (3)SHL (4)SHL (5)ROR (6)ROL (7)SAL (8)RCL (9)RCR
DX,CL DX,CL DL,1 DX,CL DL,CL DH,1 DX,CL DL,1
; 0000 0000 1011 1001→0000 0000 0001 0111 ; 0000 0000 1011 1001→0000 0101 1100 1000 ; 0000 0000 1011 1001→0000 0000 0111 0010 ; 0000 0000 1011 1001→0010 0000 0001 0111 ; 0000 0000 1011 1001→0000 0000 1100 1101 ; 0000 0000 1011 1001→0000 0000 1011 1001 ; 0000 0000 1011 1001→0000 0101 1100 1100 ; 0000 0000 1011 1001→0000 0000 1101 1100
MOV CL,4
SAL AL,CL
SAR BL,CL
OR
AL,BL
4
3.1 对于下面的数据定义,各条 MOV 指令单独执行后,有关寄存器的内容是多少?
FLDB DB ?
TABLEA DW 20 DUP(?)
TABLEBDB ‘ABCD’
①MOV AX,TYPE FLDB
②MOV AX,TYPE TABLEA
2.9 设 AX=1122H,BX=3344H,CX=5566H,SP=2000H,试分析下列程序段执行后,AX,BX,CX,
SP 的内容各为多少?并画出堆栈变化示意图。
①PUSH AX
②PUSH BX
③PUSH CX
④POP AX
⑤POP CX
2
CX
55H 66H BX
33H 44H AX
11H 22H
1FFAH 66H
1FFBH 55H 1FFCH 44H 1FFDH 1FFEH 33H
22H 1FFFH
11H 2000H
原栈顶 新栈顶
栈底
PUSH BX
PUSH CX
CX 1313H 2424H
1FFCH 44H 1FFDH 1FFEH 33H
22H 1FFFH
11H 2000H
原栈顶 新栈顶 栈底
解:(1)[00110111]真=+55 (2)[01011001]真=+89 (3)[10001101]真=-115 (4)[11111001]真=-7
(4)11111001
1.9 如何确定一个微处理器是 8 位、16 位或 32 位的器件? 答:微处理器的的位数由字长和外部数据总线的宽度决定的,而字长主要由通用寄存器、内存储器、ALU 的位数和数据总线的宽度决定的,如果内外数据总线宽度一致,那么字长的宽度即微处理器的位数,如宽 度为 8 位,即 8 位微处理器;如果内外数据总线宽度不一致,这类微处理器称为“准 XX 位”CPU,如内 部总线 16 位,外部总线 8 位,则微处理器为准 16 位。
目标:寄存器寻址
(5)TEST ES:[SI],DX
目标:寄存器间接寻址 源:寄存器寻址
(6)SBB SI,[BP]
目标:寄存器寻址
源:寄存器间接寻址
2.8 假定 DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据段中变
量名 VAL 的偏移地址值为 0050H,试指出下面源操作数字段的寻址方式是什么?其物理地址值是多少?
③MOV CX,LENGTHTABLEA
④MOV DX,SIZE TABLEA
⑤MOV CX,LENGTHTABLEB
答:① (AX)=1 ②(AX)=2 ③(CX)=20 ④(DX)=40 ⑤(CX)=1
TYPE 变量或标号 :DB,DW,DD,DQ,DT;NEAR,FAR 对应的值 1,2,4,8,10;-
[+120]原=0000 0000 0111 1000B
[+120]补=0000 0000 0111 1000B
(2)-120=-(64+32+16+8) [-120]原=1000 0000 0111 1000B
(3)+230=128+64+32+4+2
[+120]补=1111 1111 1000 1000B
(5) STRING DB ‘THIS IS A EXAMPLE’
微机原理与接口技术作业参考答案
1. 2 用 8 位二进制码,写出下列十进制数的原码和补码表示。
(1)+65 (2)+115 (3)-65 (4)-115
解: (1)[+65]原=0100 0001 [+65]补=0100 0001
(2)[+115]原=0111 0011 [+115]补=0111 0011
SUB AX,0FFFFH
;7FFFH-0FFFFH=8000H
ADD AX,8000H
;8000H+8000H=0000H
OR AX,0BFDFH ;0000H or 0BFDFH=0BFDFH
AND AX,0EBEDH ;0BFDFH and 0EBEDH= 1011 1111 1101 1111
005CH 0017H 05C8H 0072H 2017H 00CDH 00B9H 05CCH 00DCH 2.16.如果要将 AL 中的高四位移至低四位的位置,试分别写出两种实现方法的程序段。 答: 方法一:
MOV CL,4
ROL AL,CL 或
MOV CL,4
ROR AL,CL 方法二:
MOV BL,AL
2.6 指出下列指令的源和目标操作数的寻址方式:
(1)MOV ARRAY,BX
目标:直接寻址;
源:寄存器寻址
(2)ADC CX,ALPHA[BX][SI]
目标:寄存器寻址;
源:带位移的基址变址寻址
(3)AND GAMMA[DI],11011000B 目标:带位移的变址寻址;源:立即寻址
(4)INC BL
02400H 02600H
1KB 512B
8KB
1KB=210 的偏移地址范围为: 00 0000 0000~11 1111 1111 即 000H~3FFH 512B=29 的偏移地址范围为: 0 0000 0000~1 1111 1111 即 000H~1FFH 8KB=213 的偏移地址范围为: 0 0000 0000 0000~1 1111 1111 1111 即 0000H~1FFFH
(3)[-65]原=1100 0001
[-65]补=1011 1111
(4)[-115]原=1111 0011 [-115]补=1000 1101
wenku.baidu.com
1.3 用 16 位二进制码,写出下列十进制数的原码和补码表示。 (1)+120;(2)-120;(3)+230;(4)-230
解:(1)+120=64+32+16+8
and 1110 1011 1110 1101
1010 1011 1100 1101 0ABCDH
XCHG AH,AL
;0CDABH
SAL AX,1
;1100 1101 1010 1011→1001 1011 0101 0110
RCL AX,1
;1001 1011 0101 0110→0011 0110 1010 1100
2.5 如果从存储器的 2000H 地址开始分配段区,要求数据段占用 1KB 范围,堆栈段占用 512B 范围,代 码段占用 8KB 范围。按数据段、堆栈段和代码段的顺序连续存放,试画出存储器分段地址分配示意图, 图中应写明各段寄存器的内容?
1
DS 0200H SS 0240H CS 0260H
02000H
2.3 段地址和偏移地址为 1000H:117AH 的存储单元的物理地址是什么?而 1109H:00EAH 或 1025H: 0F2AH 的存储单元的物理地址又是多少?这说明什么问题? 答:段地址和偏移地址为 1000H:117AH 的存储单元的物理地址是 10000H+117AH=1117AH,而 1109H: 00EAH 的物理地址为 11090H+00EAH=1117AH,1025H:0F2AH 的物理地址是 10250H+0F2AH= 1117AH,这说明存储器中的存储单元的物理地址是唯一的,但对应的逻辑地址可以不唯一。
(3) 将字节数据 56H,0C6H,78H,12H 存放在字变量 ALPHA 的存储单元中,并且不改变
数据按字节存储的次序。
(4) 在 BETA 为首址的存储单元中连续存放字节数据:2 个 23,5 个‘A’,10 个(1,2),20
个空单元。
(5) 在 STRING 为首址的存储单元中存放字符串‘THIS IS A EXAMPLE’。
每条指令执行后 AX 的内容为:
0000H
0FFFFH 7FFEH
8000H
7FFFH
8000H
0000H
0BFDFH 0ABCDH 0CDABH 9B56H
36ADH
2.15 假定 DX=00B9H,CL=3,CF=1,确定下列各条指令单独执行后 DX 中的值。
(1)SHR DX,1
; 0000 0000 1011 1001→0000 0000 0101 1100
POP AX
PUSH CX
2.10 下列程序段中每一条指令执行完后,AX 中的十六进制内容是什么?
MOV AX,0
;0000H
DEC AX
;0000H-1=0FFFFH
ADD AX,7FFFH
;0FFFFH+7FFFH=7FFEH
ADD AX,2
;7FFEH+2=8000H
NOT AX
;NOT 8000H=7FFFH
(1)MOV AX,00ABH
;立即寻址
由 CS 和 IP 决定
(2)MOV AX,BX
;寄存器寻址
BX 为 CPU 内部的
(3)MOV AX,[100H]
;直接寻址
20000H+100H=20100H
(4)MOV AX,[BX]
;寄存器间接寻址
20000H+0100H=20100H
(5)MOV AX,[BP]
[+230]原=0000 0000 1110 0110B (4)-120=-(64+32+16+8)
[-230]原=1000 0000 1110 0110B
[+230]补=0000 0000 1110 0110B [+230]补=1111 1111 0001 1010B
1.4 写出下列用补码表示的二进制数的真值。 (1)00110111 (2)01011001 (3)10001101
(9)MOV AX,ES:[BX]
;带段超越前缀的寄存器间接寻址 21000H+0100H=21100H
(10)MOV AX,[SI]
;寄存器间接寻址
20000H+00A0H=200A0H
(11)MOV AX,VAL[BX] ;带位移的基址寻址
20000H+0050H+0100H=20150H
(12)MOV AX,VAL[BX][SI] ;带位移的基址变址寻址 20000H+0050H+0100H+00A0H=201F0H
(6) 用符号 COUNT 替代 100。
答:
(1) ARRAY DB 56H,78,0B3H,100
(2) DATA DW 2965H,45H,2965,0A6H
(3) ALPHA DW 0C656H,1278H
(4) BETA DB 2 DUP(23), 5 DUP(‘A’), 10 DUP(1,2), 20 DUP(?)
1,-2
LENGTH 变量
:仅对于 DUP 定义的变量,计算分配的单元数
SIZE 变量
:仅对于 DUP 定义的变量,计算分配的字节数
3.2 试写出完成下列操作的伪指令语句。
(1) 将 56H,78,0B3H,100 存放在定义为字节变量 ARRAY 的存储单元中。
(2) 将字数据 2965H,45H,2965,0A6H 存放在定义为字变量 DATA 的存储单元中。
1FFEH
22H 栈顶
1FFFH
11H
2000H
栈底
1FFCH 44H 栈顶
1FFDH
33H 1FFEH
22H
1FFFH
11H
2000H
栈底
1FFAH 66H 栈顶
1FFBH 55H
1FFCH 44H
1FFDH
1FFEH 33H 22H
1FFFH 11H
2000H
栈底
AX 55H 66H
PUSH AX
;寄存器间接寻址
15000H+0010H=15010H
(6)MOV AX,[BX+10]
;带位移的基址寻址
20000H+0100H+10=2010AH
(7)MOV AX,[BX][SI]
;基址变址寻址
20000H+0100H+00A0H=201A0H
(8)MOV AX,VAL
;直接寻址
20000H+0050H=20050H
相关文档
最新文档