计算机组成与汇编语言第4章作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章作业
4.1 简述下列名词:
(1)指令周期
[答案] 指令周期就是CPU从取指令到执行完一条指令的时间。
它包括若干机器周期。
(2)机器周期
[答案]机器周期,又称为CPU周期,是微处理器完成各种类型操作所花费的时间,它由若干时钟周期T组成。
(3)时钟周期
[答案] 微机时钟信号CLK的周期长度称为时钟周期T,一般是机器主频的倒数。
时钟周期是计算机处理操作的最基本的时间单位。
4.4 结合图4.2,说明下述指令的微操作流程:
(1)SUB R1, R2 ;功能为R1←R1- R2
[答案]SUB R1,R2的操作流程如下:
取指令:① PC→ AR,PC+1→PC;
② Read M,指令→IR。
分析指令:① IR(OP)→CU, IR(OPDAD),即R1,R2→ALU
执行指令:R1- R2→R1
(2)MOV R3, (1000H) ;功能为R3←(1000H),(1000H)表示地址为1000H的存储单元内容。
[答案]MOV R3, (1000H)的操作流程如下:
取指令:① PC→ AR,PC+1→PC;
② Read M,指令→IR。
分析指令:① IR(OP)→CU, IR(OPDAD),即1000H→AR;
② Read M,M→DR。
执行指令:DR→R3
(3)SUB (R1), R2 ;功能为(R1)←(R1)- R2
[答案]
取指令:① PC→ AR,PC+1→PC;
② Read M,指令→IR。
分析指令:① IR(OP)→CU, IR(OPDAD),即R1→AR, R2→ALU;
② Read M,M→DR→ALU。
执行指令:①(R1)- R2→ DR
② Write M, DR→ M。
4.5* 简述微程序控制器的概念和基本工作原理。
[答案] 一条机器指令的执行过程可细分为若干个基本的微过程,每一个微过程的实现是由许多微操作信号来控制有关电路完成的。
通常把一个微操作控制信号叫作一个微命令,它是构成控制信号序列的最小单位。
一个微过程要实现的操作称为微指令,那么,一条机器指令的执行过程显然可由一组微指令来实现。
而每一条微指令将由几个或几十个微命令组成。
这样,一条机器指令的执行过程就成为一个微指令序列的执行过程。
基于程序控制的概念,这种解释一条机器指令的微指令序列称为微程序。
不同的机器指令,对应的微程序是不同的,它取决于机器指令的功能强弱。
于是,一个机器语言程序的执行过程,转化为与之对应的微程序的执行过程,机器指令执行过程中需要的微操作便由构成各条微指令的微命令来产生。
这种控制方式称作微程序方式,其相应的部件就是微程序控制器。
4.6* 8086处理器分为哪两个部分?试述8086指令重叠运行的情况。
[答案] 8086处理器按功能分为总线接口单元BIU和执行单元EU两大部分。
其中BIU 完成从内存单元中预取指令,送到指令队列缓冲器暂存,完成取指令;及从指定的内存单元或I/O 端口中取数据送EU,或把EU的处理结果送指定的内存单元或I/O端口,完成数据存取。
执
行单元EU负责从指令队列缓冲器中取指令,并对指令译码,完成指令的执行。
这两个功能部件的操作可以并行,即BIU预取指令时,EU可同时分析和执行指令。
因此,这两个功能部件及一个缓冲,基本上就能实现取指令和分析执行指令部分重叠。
由于8086的指令系统属于CISC,指令执行周期、指令长度很不一致,其指令操作可类似重叠,提高了系统性能,但还不能发挥真正流水线的高效率。
4.7 8086的地址总线和数据总线的宽度各为多少?8086能够寻址多大的存储器空间?为什么?
[答案] 8086的地址总线宽度是20位,数据总线宽度是16位,因为220=1M,所以可寻址的存储器空间为220=1MB。
地址编号从00000H号开始,最高为FFFFFH。
4.9 说明让8086执行下列操作后,其标志寄存器的6个状态标志位情况:
(1)8AC3H+B7C2H (2)8AC3H-B7C2H
(3)9D35H+0A08BH (4)9D35H-0A08BH
[答案]
操作运算结果CF ZF SF OF PF AF
(1)8AC3H+B7C2H 4285H 1 0 0 1 0 0
(2)8AC3H-B7C2H D301H 1 0 1 0 0 0
(3)9D35H+0A08BH 3DC0H 1 0 0 1 1 1
(4)9D35H-0A08BH ECAAH 1 0 1 0 1 1
4.10 试述8086处理器中的通用寄存器、指针变址寄存器、控制寄存器和段寄存器包括哪些寄存器,各有何作用?
[答案]通用寄存器包括AX、BX、CX、DX等4个16位数据寄存器,用来暂存操作数。
其中,每个寄存器可以作为一个16位的寄存器使用,也可以作为两个8位寄存器单独使用。
指针变址寄存器包括SP、BP、SI和DI等4个16位寄存器。
常用来存放不同用途的地址信息,也可以存放数据。
SP堆栈指针寄存器,用它指出当前堆栈的栈顶位置。
BP基址指针寄存器,与SS联用,确定堆栈段中某一存储单元的物理地址。
SI源变址寄存器,与数据段寄存器DS联用,用于确定数据段中某一存储单元的地址。
DI为目的变址寄存器,与数据段寄存器DS或辅助段寄存器ES联用,用于确定数据段中某一存储单元的地址。
控制寄存器包括IP和Flag等两个16位寄存器。
IP即程序计数器,它存放下一条要执行指令的有效地址EA,其内容由BIU自动修改。
Flag标志寄存器是一个16位的寄存器,用来存放6个状态标志和3个控制标志。
其中状态标志有:CF、PF、AF、ZF、SF和OF,用来反映运算结果的状态特征,它将影响后面的操作或者作为条件转移的依据。
控制标志有:IF、DF、TF,用来控制CPU的操作。
控制标志可以用指令设置。
段寄存器包括CS、DS、SS、ES等4个16位段寄存器, CS存放当前代码段,即程序所在段的首地址。
DS保存当前程序所用数据段的首地址,数据段用来保存当前程序的操作数据和变量数据。
SS存放当前程序所用堆栈段的首地址。
ES存放辅助数据所在段的首地址。
4.12 若8086的CS为B000H,试说明现行代码段可寻址存储空间的范围。
[答案] 代码段首地址B0000H,末地址BFFFFH,可寻址存储空间的范围为64KB。
4.13 下面给出8086存储器中的逻辑地址,请分别写出对应的物理地址:
(1)2000H:B7C2H (2)3200H:59BCH
(3)9D36H:A086H (4)D304H:0008H
[答案](1)2 B7C2H (2)379BCH (3)A73E6H (4)D3048H
4.14 已知8086存储器中的物理地址为2085AH,请写出3个可能的逻辑地址。
[答案](1)2000H:085AH (2)2010H:075AH (3)1EEEH:197AH
4.15 8086指令的逻辑地址如何表示?8086中的存储器操作数的逻辑地址如何表示?
[答案] 8086指令的逻辑地址可用CS:EA表示。
其中CS为代码段寄存器的内容,即指令所在代码段首地址,EA为指令的有效地址,即指令在代码段内的偏移地址。
8086中的存储器操作数的逻辑地址用由16位与数据相关的段地址和16位段内偏移地址表示。
即数据段中操作数的逻辑地址,可用数据段寄存器DS的内容和操作数据或变量在数据段中的有效地址(即偏移地址)EA来表示,即用DS:EA表示。
堆栈段中数据的逻辑地址,可用SS:SP两个寄存器的内容表示。
附加段中操作数的逻辑地址,可用附加段寄存器ES的内容和操作数据或变量在附加段中的有效地址(即偏移地址)EA来表示,即用ES:EA表示。
第5章作业
5.3 指出下列指令的错误
(1)MOV AL,1000
答:源操作数超出字节表数范围,可改为MOV AX,1000
(2)MOV BX,AL
答:源和目的操作数类型不一致,可改为MOV BX,AX
(3)MOV [SI],800H
答:源和目的操作数类型不明确,可改为MOV WORD PTR [SI],800H
(4)ADD [DI],[SI]
答:源和目的操作数不能同为存储器操作数,可改为MOV AL,[SI] ADD [DI],AL
(5)MOV AX,COUNT[BX][BP]
答:目的操作数寻址采用两个基址寄存器错误,可改为MOV AX, COUNT[BX][SI]
(6)SHL AX,2
答:移位次数超过2及以上,不能直接用数值表示,必须用CL寄存器表示,可改为MOV CL, 2 SHL AX,CL
(7)MOV CS,AX
答:CS寄存器不能作目的操作数
(8)SHR DL,CH
答:移位次数不能用CH表示,必须用CL寄存器表示,可改为MOV CL, CH SHL DL,CL
(9)MOV 86H,AL
答:立即数不能作目的操作数
(10)9
答:MUL指令中源操作数不能是立即数,可改为MOV CL, 9 MUL CL
(11)MOV DS,SS
答:段寄存器之间不能传送数据,可改为MOV AX, SS MOV DS, AX
(12)INC [DI]
答:源操作数类型不明确,可改为INC BYTE PTR [DI]
5.5 用若干种方法实现下列要求,给出指令或指令序列。
(1)清累加器AX
答:① MOV AX,0 ② SUB AX,AX ③ AND AX,0 ④ XOR AX,AX
(2)清进位标志位
答:① CLC ② AND AX,AX
(3)将累加器AL的内容乘以2
答:① SHL AL,1 ② ADD AL,AL
(4)使BL寄存器低4位清零,高4位保持不变
答:AND BL,0F0H
(5)使BL寄存器低4位置1,高4位保持不变
答:OR BL,0FH
(6)使AL寄存器低4位保持不变,高4位取反
答:XOR AL,0F0H
5.6 设DS=1000H,ES=2000H,SS=1500H,SI=0080H,BX=0900H,BP=0110H,试指出下列指
令的源操作数是什么寻址方式?它的物理地址是多少?
(1)MOV AX,098H
答:源操作数是立即寻址,它来自于指令
(2)MOV AX,[1000H]
答:源操作数是直接寻址,它的逻辑地址是DS:1000H物理地址是11000H
(3)MOV AL,[SI]
答:源操作数是寄存器间接寻址,它的逻辑地址是DS:SI,物理地址是10080H
(4*)MOV AX,[BP]
答:源操作数是寄存器间接寻址,它的逻辑地址是SS:BP,物理地址是15110H
(5*)MOV AX,DS:[BP+10]
答:源操作数是寄存器相对寻址,它的逻辑地址是DS:BP+10,物理地址是1011AH
(6)MOV AX,[BX][SI]
答:源操作数是寄存器基址变址寻址,它的逻辑地址是DS:BX+SI,物理地址是10980H (7)ADD BX,SS:[SI]
答:源操作数是寄存器间接寻址,它的逻辑地址是SS:SI,物理地址是15080H
(8)ADD CX,BX
答:源操作数是寄存器寻址,它的逻辑地址是DS:BX,物理地址是10900H
5.7 写出执行以下二进制运算的指令序列,其中X、Y、Z、W、R均为存放16位带符号数变
量。
(1)Z=(Z-X)+W
答:MOV AX, Z
SUB AX, X
ADD AX, W
MOV Z, AX
(2*)Z=W-(X+10)-(R+8)
答:MOV BX, X
ADD BX, 10
MOV AX, W
SUB AX, BX
MOV BX, R
ADD BX, 8
SUB AX, BX
MOV Z, AX
(3)Z=(W×X)/(Y+4)
答:MOV BX, X
MOV AX, W
IMUL BX ; DX,AX=W×X
MOV BX, Y
ADD BX, 4
IDIV BX
MOV Z, AX ; 存商
MOV Z+2, DX ; 存余数
5.8 假定AX和BX中是有符号数,CX和DX中是无符号数,请为下列各项确定CMP和条件转移指令:
(1)CX值超过DX转移至标号NEXT处。
答:CMP CX, DX
JA NEXT
(2)AX值超过BX转移至标号NEXT处。
答:CMP AX, BX
JG NEXT
(3)DX值为0转移至标号NEXT处。
答:CMP DX, 0
JZ NEXT
(4)CX值小于等于DX转移至标号NEXT处。
答:CMP CX, DX
JBE NEXT
5.9 自BUFFER单元开始连续存放两个双字类型数据,编程序求它们的和,并将结果存放在这两个数据之后。
答:MOV AX, WORD PTR BUFFER
MOV DX, WORD PTR BUFFER+2
ADD AX, WORD PTR BUFFER+4
ADC DX, WORD PTR BUFFER+6
MOV WORD PTR BUFFER+8, AX
MOV WORD PTR BUFFER+10, DX
5.10* 编写一程序段,实现比较两个10字节的字符串OLDS和NEWS,若两串不等,则转向NSAME标号,否则顺序执行程序。
答:LEA SI, OLDS
LEA DI, NEWS
MOV CX, 10
LP: MOV AL, [SI]
CMP AL, [DI]
JNE NSAME
INC SI
INC DI
LOOP LP
......
NSAME: ......
5.11 写出4条使AX清零的指令。
答:① MOV AX,0 ② SUB AX,AX ③ AND AX,0 ④ XOR AX,AX
5.12* 写一程序片段求AL和BL之差的绝对值。
答:解法1
SUB AL, BL
JS NEXT
JMP ENDO
NEXT: NEG AL
ENDO: MOV RESULT, AL
答:解法2
CMP AL, BL
JGE NEXT
XCHG AL, BL
NEXT: SUB AL, BL
MOV RESULT, AL
5.13* 写出把首址为BUF的字型数组的第二个字送到AX寄存器的指令,要求使用3种不同的寻址方式实现。
答:① MOV AX, BUF+2 ; 直接寻址
② LEA SI, BUF
MOV AX, [SI+2] ; 相对寻址
③ MOV SI, 2
MOV AX, BUF[SI] ; 相对寻址
④ LEA BX, BUF
MOV SI, 2
MOV AX, [BX+SI] ; 基址变址寻址
5.14* 已知(AL)=8EH,标志寄存器中的标志位OF、SF、ZF、AF、PF、CF均为0,指出执行指令ADD AL, 72H后,各标志位的值。
答:执行指令ADD AL, 72H后,各标志位的值是:
OF=0、SF=0、ZF=1、AF=1、PF=1、CF=1
5.15 分别用乘法指令和移位、加法指令实现y=12x的运算。
答:①MOV AL, X ; 用乘法指令
MOV BL, 12
MUL BL
MOV Y, AX
②MOV AX, X ; 用移位、加法指令
MOV BX, AX
MOV CL, 3
SHL AX, CL ; AX=8*X
MOV CL, 2
SHL BX, CL ; BX=4*X
ADD AX, BX ; AX=12*X
MOV Y, AX。