当前位置:文档之家› 微机原理答案

微机原理答案

习题1

1. 什么是汇编语言,汇编程序,和机器语言?
答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
汇编语言是面向及其的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。

2. 微型计算机系统有哪些特点?具有这些特点的根本原因是什么?
答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、重量轻、耗电省,维护方便。
这些特点是由于微型计算机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。

3. 微型计算机系统由哪些功能部件组成?试说明“存储程序控制”的概念。
答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。
“存储程序控制”的概念可简要地概括为以下几点:
① 计算机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。
② 在计算机内部采用二进制来表示程序和数据。
③ 将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。
④ 五大部件以运算器为中心进行组织。

4. 请说明微型计算机系统的工作过程。
答:微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。

5. 试说明微处理器字长的意义。
答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。它决定着计算机内部寄存器、ALU和数据总线的位数,反映了一台计算机的计算精度,直接影响着机器的硬件规模和造价。计算机的字长越大,其性能越优越。在完成同样精度的运算时,字长较长的微处理器比字长较短的微处理器运算速度快。

6. 微机系统中采用的总线结构有几种类型?各有什么特点?
答:微机主板常用总线有系统总线、I/O总线、ISA总线、IPCI总线、AGP总线、IEEE1394总线、USB总线等类型。

7. 将下列十进制数转换成二进制数、八进制数、十六进制数。
① (4.75)1

0=(0100.11)2=(4.6)8=(4.C)16
② (2.25)10=(10.01)2=(2.2)8=(2.8)16
③ (1.875)10=(1.111)2=(1.7)8=(1.E)16

8. 将下列二进制数转换成十进制数。
① (1011.011)2=(11.6)10
② (1101.01011)2=(13.58)10
③ (111.001)2=(7.2)10

9. 将下列十进制数转换成8421BCD码。
① 2006=(0010 0000 0000 0110)BCD
② 123.456=(0001 0010 0011.0100 0101 0110)BCD

10. 求下列带符号十进制数的8位基2码补码。
① [+127]补= 01111111
② [-1]补= 11111111
③ [-128]补= 10000000
④[+1]补= 00000001

11. 求下列带符号十进制数的16位基2码补码。
① [+655]补= 0000001010001111
② [-1]补=1111111111111110
③ [-3212]补=1111011101011100
④ [+100]补=0000000001100100
习题 2

1. 8086 CPU在内部结构上由哪几部分组成?各部分的功能是什么?
答:8086 CPU内部由两大独立功能部件构成,分别是执行部件和总线接口部件。执行部件负责进行所有指令的解释和执行,同时管理有关的寄存器。总线接口部件是CPU在存储器和I/O设备之间的接口部件,负责对全部引脚的操作。

2. 简述8086 CPU的寄存器组织。
答:8086 CPU内部共有14个16位寄存器,按用途可分为数据寄存器,段寄存器,地址指针与变址寄存器和控制寄存器。数据寄存器包括累加器,基址寄存器,计数器,和数据寄存器。段寄存器用来存放各分段的逻辑段基值,并指示当前正在使用的4个逻辑段。地址指针与变址寄存器一般用来存放主存地址的段内偏移地址,用于参与地址运算。
控制寄存器包括指令寄存器和标识寄存器。

3. 试述8086 CPU标志寄存器各位的含义与作用。
答:标志寄存器是16位的寄存器,但实际上8086只用到9位,其中的6位是状态标识位,3位是控制标识位。状态标志位分别是CF,PF,AF,ZF,SF,和OF;控制标志位包括DF,IF,TF。
CF:进位标志位。算数运算指令执行后,若运算结果的最高位产生进位或借位,则CF=1,否则CF=0。
PF:奇偶标志位。反应计算结果中1的个数是偶数还是奇数。若运算结果的低8位中含有偶数个1,则PF=1;否则PF=0.
AF:辅助进位标志。算数运算指令执行后,若运算结果的低4位向高4位产生进位或借位,则AF=1;否则AF=0.
ZF:零标志位。若指令运算结果为0,则ZF=1;否则ZF=0。
SF:符号标志位。它与运算结果最高位相同。
OF:溢出标志位。当补码运算有溢出时,OF=1;否则OF=0。
DF:方向标志位。用于串操作指令,指令字符串处理时的方向。
IF:中断允许标志位。用来控制8086是否允许接收外部中断请求。
TF:单步标志位。它是为调试程序而设定的陷阱控制位。

4. 8086 CPU状态标志和控制标志有何不同?程序中是

怎样利用这两类标识的?8086的状态标志和控制标识分别有哪些?
答:状态标志位反应了当前运算和操作结果的状态条件,可作为程序控制转移与否的依据。它们分别是CF,PF,AF,ZF,SF,和OF。控制标志位用来控制CPU的操作,由指令进行置位和复位,控制标志位包括DF,IF,TF。

5. 将1001 1100和1110 0101相加后,标识寄存器中CF, PF, AF, ZF, SF, OF各为何值?
答:CF=1,PF=1,AF=1,ZF=0,SF=1,OF=0

6. 什么是存储器的物理地址和逻辑地址?在8086系统中,如何由逻辑地址计算物理地址?
答:逻辑地址是思维性的表示,由段地址和偏移地址联合表示的地址类型叫逻辑地址。物理地址是真实存在的唯一地址,指的是存储器中各个单元的单元号。
在8086系统中,物理地址=段地址×10H+偏移地址

7. 段寄存器CS=1200H,指令指针寄存器IP=4000H,此时,指令的物理地址为多少?指向这一地址的CS指和IP值是唯一的吗?
答:此指令的物理地址=1200H×10H+4000H=16000H 并且指向这一物理地址的CS值和IP值并不是唯一的。

8. 在8086系统中,逻辑地址FFFF:0001,00A2:37F和B800:173F的物理地址分别是多少?
答:
逻辑地址 FFFF:0001 00A2:3TF B800:173F
物理地址 FFFF1H 00D9FH B973FH

9. 在8086系统中,从物理地址388H开始顺序存放下列3个双字节的数据651AH,D761H和007BH,请问物理地址388H,389H,38AH,38BH,38CH和38DH 6个单元中分别是什么数据?
答:(388H)=1AH,(389H)=65H,(38AH)=61H,(38BH)=DTH,(38CH)=7BH,(38DH)=00H

10. 8086微处理器有哪几种工作模式?各有什么特点?
答:8086微处理器有最大和最小工作模式。
在最小模式下:8086 CPU直接产生全部总线控制信号(DT/R,DEN,ALE,M/IO)和命令输出信号(RD,WR,INTA)并提出请求访问总线的逻辑信号HOLD,HLDA。
在最大工作模式下,必须配置8288总线控制器,并且根据8086提供的状态信号S2,S1,S0,输出读写控制命令,可以提供灵活多变的系统配置,以实现最佳的系统性能。

11. 简述8086引脚信号中M/IO,DT/R,RD,WR,ALE,DEN和BHE的作用。
答:M/IO:输出信号,高电平时,表示CPU与存储器之间数据传输;低电平时,表示CPU与I/O设备之间数据传输。
DT/R:控制其数据传输方向的信号。DT/R=1时,进行数据发送;DT/R=0时,进行数据接收。
RD:CPU的读信号,RD=0时,表示8086为存储口或I/O端口读操作。
WR:CPU的写信号,WR =0时,表示8086为存储口或I/O端口写操作。
ALE:地址存锁信号,在T1能时刻有效。
DEN:数据选通信号,当DEN有效时,表示允许传输。
BHE:数据总线允许信号,与A0组合使用,表示是否访问奇地址字节。

12. 简述8086读总线周期和写

总线周期和引脚上的信号动尖态变化过程。8086的读周期时序和写周期时序的区别有哪些?
答:在8086读周期内,有关总线信号的变化如下:
①M/ :在整个读周期保持有效,当进行存储器读操作时,M/ 为高电平;当进行I/O端口读操作时,M/ 为低电平。
②A19/S6~A16/S3:在T1期间,输出CPU要读取的存储单元或I/O端口的地址高4位。T2~T4期间输出状态信息S6-S3。
③ /S7:在T1期间,输出BHE有效信号( 为低电平),表示高8位数据总线上的信息可以使用, 信号通常作为奇地址存储体的体选信号(偶地址存储体的体选信号是最低地址位A0)。T2—T4期间输出高电平。
④ADl5~AD0:在T1期间,输出CPU要读取的存储单元或I/O端口的地址A15~A0。T2期间为高阻态,T3~T4期间,存储单元或I/O端口将数据送上数据总线。CPU从ADl5~AD0上接收数据。
⑤ALE:在T1期间地址锁存有效信号,为一正脉冲,系统中的地址锁存器正是利用该脉冲的下降沿来锁存A19/S6~A16/S3,ADl5~AD0中的20位地址信息以及 。
⑥ :T2期间输出低电平送到被选中的存储器或I/O接口,注意,只有被地址信号选中的存储单元或I/O端口,才会被RD信号从中读出数据(数据送上数据总线ADl5~AD0)。
⑦DT/ :在整个总线周期内保持低电平,表示本总线周期为读周期,在接有数据总线收发器的系统中,用来控制数据传输方向。
⑧ :在T2~T3期间输出有效低电平,表示数据有效,在接有数据总线收发器的系统中,用来实现数据的选通。
总线写操作的时序与读操作时序相似,其不同处在于:
①ADl5~AD0:在T2~T4期间送上欲输出的的数据,而无高阻态。
② :从T2~T4, 引脚输出有效低电平,该信号送到所有的存储器和I/O接口。注意,只有被地址信号选中的存储单元或I/O端口才会被 信号写入数据。
③DT/ :在整个总线周期内保持高电平,表示本总线周期为写周期,在接有数据总线收发器的系统中,用来控制数据传输方向。

习题3

1. 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令原操作数是什么寻址方式,其物理地址是多少?
(1) MOV AX, 0ABH (2) MOV AX, [100H]
(3) MOV AX, VAL (4) MOV BX, [SI]
(5) MOV AL, VAL[BX] (6) MOV CL, [BX][SI]
(7) MOV VAL[SI], BX (8) MOV [BP][SI], 100
答:(1) 立即数寻址,物理地址:无
(2) 直接寻址,物理地址=2000H×10H+100H=20100H
(3) 直接寻址,物理地址=2000H×10H+0050H=20050H
(4) 寄存器间接寻址,PA=2000H×10H+00A0=200A0H
(5) 相对寄存器寻址,PA=2000H×10H+(0050+0100H)=20150H
(6) 基址加变寻址,PA=2000H×10H+(0100H+00A0H)=201A0H
(7) 寄存器寻址,

无PA
(8) 立即数寻址,无PA

2. 已知(SS)=0FFA0H,(SP)=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP内容变化的过程示意图。
答:
“8057H”进栈,则SP自动从00B0H指向00B2H,“0F79H”进栈,则SP自动从00B2H指向00B4H;执行一条POP指令,“0F79H”被弹出栈,SP从00B4H指向00B2H。图略。

3. 设有关寄存器及存储单元的内容如下:
(DS)=2000H, (BX)=0100H, (AX)=1200H, (SI)=0002H, (20100H)=12H, (20101H)=34H, (20102H)=56H, (20103H)=78H, (21200H)=2AH, (21201H)=4CH, (21202H)=0B7H, (21203H)=65H.
试说明下列各条指令单独执行后相关寄存器或存储单元的内容。
(1) MOV AX, 1800H (2) MOV AX, BX
(3) MOV BX, [1200H] (4) MOV DX, 1100[BX]
(5) MOV [BX][SI], AL (6) MOV AX, 1100[BX][SI]
答:(1) (AX)=1800H (2) (AX)=0100H (3) (BX)=4C2AH
(4) (DX)=4C2AH (5) (20102H)=00H (6) (AX)=65B7H

4. 写出实现下列计算的指令序列。
(1) Z=W+(X+Z) (2) Z=W-(X+6)-(R+9)
答:(1) MOV AX, Z
ADD AX, X
ADD AX, W
MOV Z, AX
(2) MOV AX, W
ADD X, 6
SUB AX, X
ADD R, 9
SUB AX, R
MOV Z, AX

5. 若在数据段中从字节变量TABLE相应的单元开始存放了0~15的平方值,试写出包含XLAT指令的指令序列查找N(0~15)中的某个平方数。
答:LEA BX, TABLE
MOV AL, CL
XLAT

6. 写出实现下列计算的指令序列。
(1) Z=(W*X)/(R+6) (2) Z=((W-X)/5*Y)*2
答:(1) MOV AX, W
IMUL X
ADD R, 6
IDIV R
MOV Z, AX
(2) MOV AX, W
SUB AX, X
MOV BL, 5
IDIV BL
CBW
IMUL Y
MOV BX, 2
IMUL BX
MOV Z, AX

7. 假定(DX)=1100100110111001B,CL=3,CF=1, 试确定下列各条指令单独执行后DX的值。
(1) SHR DX, 1 (2) SHL DL, 1 (3) SAL DH, 1 (4) SAR DX, CL
(5) ROR DX, CL (6) ROL DL, CL (7) RCR DL, 1 (8) RCL DX, CL
答:(1) (DX)=0110 0100 1101 1100B (2) (DX)=1100 1001 0111 0010B
(3) (DX)=1001 0010 1011 1001B (4) (DX)= 1111 1001 0011 0111B
(5) (DX)= 0011 1001 0011 0111B (6)(DX)= 0100 1101 1100 1110B
(7) (DX)= 1110 0100 1101 1100B (8) (DX)= 1001 0011 0111 0011B

8. 已知程序段如下:
MOV AX, 1234H
MOV CL, 4
ROL AX, CL
DEC AX
MOV CX, 4
MUL CX
INT 20H
试问:(1)每条指令执行后,AX寄存器的内容是什么?(2)每条指令执行后,CF,SF及ZF的值分别是什么?(3)程序运行结束后,AX及DX寄存器的值为多少?
答:MOV AX, 1234H (AX)=1234H, CF=0,SF=0,ZF=0
MOV CL, 4
ROL AX,CL (AX)=2341H,CF=1,SF=0,ZF=0
DEC AX (AX)=2340H,CF=1,SF=0,ZF=0
MOV CX,4
MULL CX (AX)=8D00H, CF=0,SF=1,ZF=0
INT 20H
结束后,(DX)=0000H, (AX)=8000H

9. 试分析下

列程序段:
ADD AX, BX
JNC L2
SUB AX, BX
JNC L3
JMP SHORTL5
如果AX,BX的内容给定如下:
AX BX
(1) 14C6H 80DCH
(2) B568H 54B7H
问该程序在上述情况下执行后,程序转向何处。
答:(1)转到L2处
(2)转到L3处

习题4

1.下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。
VAR1 DB 10,2
VAR2 DW 5 DUP(?),0
VAR3 DB ‘HOW ARE YOU?’,3 DUP(1,2)
VAR4 DD -1,1,0
答:字节空间:
VAR1:2;
VAR2:12;
VAR3:13;
VAR4:8。
存储空间的分配图:


2.假定VAR1 和VAR2 为字变量,LAB 为标号,试指出下列指令的错误之处。
(1)ADD VAR1,VAR2 (2)SUB AL,VAR1
(3)JMP LAB[CX] (4)JNZ VAR1
(5) MOV [1000H],100 (6)SHL AL, 4
答:(1) 在算术运算指令中,两个操作数不能同时为存储器寻址方式
(2) AL 为字节,VAR1 为字变量,字长不相等;
(3) 寄存器相对寻址方式,只能使用基址或变址寄存器,不能使用CX寄存器。
(4) 转向地址应为标号,不能是变量;
(5) 目的操作数的类型不确定;
(6) SHL 指令中,当所移位数超过1 时,必须用CL取代所移位数。

3.对于下面的符号定义,指出下列指令的错误。
A1 DB ?
A2 DB 10
K1 EQU 1024
(1) MOV K1,AX (2)MOV A1,AX
(3)CMP A1,A2 (4)K1 EQU 2048
答:(1)K1 为常量,不能用MOV 指令赋值;
(2)A1 为字节,AX 为字变量,不匹配;
(3)A1 未定义,无法做比较指令;
(4)K1 重新赋值前,必须用PURGE 释放。

4.数据定义语句如下所示:
FIRST DB 90H,5FH,6EH,69H
SECOND DB 5 DUP(?)
THIRD DB 5 DUP(?)
自FIRST 单元开始存放的是一个四字节的十六进制数(低位字节在前),要求:
编一段程序将这个数左移两位后存放到自SECOND 开始的单元,右移两位后存放到自THIRD 开始的单元。(注意保留移出部分)
答:
DATA SEGMENT
FIRST DB 90H,5FH,6EH,69H
SECOND DB 5 DUP(?)
THIRD DB 5 DUP(?)
FORTH DB 4 DUP (?)
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA SI,FIRST
LEA DI,SECOND
MOV CX,2
CLC
;左移2 位
MOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据
INC SI
INC SI
MOV DX,WORD PTR [SI] ;DX=696EH 为高十六位数据
PUSH DX ;保存原有的高十六位数据
PUSH AX ;保存原有的低十六位数据
ROL DX,CL
;将高位数据不带进位循环左移两位,即高2 位数据在DL 的低2 位
AND DL,03H ;让DL 中仅保存移出的高2 位数据
MOV [DI+4] ,DL;将移出的高2 位数据放入SECOND 中的最高单元中
ROL AX,CL
;将低位数据不带进位循环左移两位,即AX 的高2

位在AL 的低2 位
AND AL,03H;让AL 中仅保存移出的AX 高2 位数据
MOV BL ,AL;将AL 中的数据放入BL 中保存
POP AX;弹出原有的低十六位数据
POP DX;弹出原有的高十六位数据
SHL DX,CL;将高位数据算术逻辑左移2 位
SHL AX,CL;将低位数据算术逻辑左移2 位
OR DL,BL;将AX 中移出的高2 位数据放入DX 的低2 位
MOV WORD PTR [DI] ,AX
MOV WORD PTR [DI+2] ,DX
;右移2 位
LEA SI,FIRST
LEA DI,THIRD
MOV CX,2
CLC
MOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据
INC SI
INC SI
MOV DX,WORD PTR [SI] ; DX=696EH 为高十六位数据
PUSH DX;保存原有的高十六位数据
PUSH AX;保存原有的低十六位数据
ROR AX,CL;将低位数据不带进位循环右移两位,即低2 位数据在AH 的高2 位
AND AH,0C0H;让AH 中仅保存移出的低2 位数据
PUSH CX
MOV CX,6
SHR AH,CL
POP CX
MOV [DI] ,AH ;将移出的低2 位数据放入THIRD 中的最低单元中
ROR DX, CL
;将低位数据不带进位循环左移两位,即AX 的高2 位在AL 的低2 位
AND DH,0C0H ;让DH 中仅保存移出的DX 低2 位数据
MOV BL ,DH ;将DH 中的数据放入BL 中保存
POP AX ;弹出原有的低十六位数据
POP DX ;弹出原有的高十六位数据
SHR DX,CL ;将高位数据算术逻辑左移2 位
SHR AX,CL ;将低位数据算术逻辑左移2 位
OR AH,BL ;将DX 中移出的低2 位数据放入AX 的高2 位
MOV WORD PTR [DI+1] , AX
MOV WORD PTR [DI+3] ,DX
;求补
LEA SI,FIRST
LEA DI,FORTH
MOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据
INC SI
INC SI
MOV DX,WORD PTR [SI] ; DX=696EH 为高十六位数据
XOR AX, 0FFFFH ;将低十六位取反
XOR DX, OFFFFH ;将高十六位按位取反
CLC
ADD AX,01H ;低位加1,即可为原数的求补
ADC DX,0 ;高位加低位加法时的进位
MOV WORD PTR [DI] , AX
MOV WORD PTR [DI+2] ,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START

5. 试编程序将内存从40000H到4BFFFH的每个单元中均写入55H,并再逐个单元读出比较,看写入的与读出的是否一致。若全对,则将AL置7EH; 只要有错,则将AL置81H。
答:
DATA SEGMENT
DA1 DB 55H
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,4000H
MOV DS,AX
MOV CX,0C000H
MOV BX,0000H
MOV AH,55H
NEXT1: MOV byte ptr[BX],AH
INC BX
LOOP NEXT1
MOV BX,0000H
MOV CX,0C000H
MOV AL,81H
NEXT2: MOV AH, [BX]
CMP AH,55H
JNZ EXIT
INC BX
LOOP N

EXT2
MOV AL,7EH
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START

6. 在当前数据段4000H开始的128个单元中存放一组数据,试编程序将它们顺序搬移到A000H开始的顺序128个单元中,并将两个数据块逐个单元进行比较; 若有错将BL置00H; 全对则将BL置FFH,试编程序。
答:
DATA SEGMENT
ORG 400H
DA1 DB 128 DUP(?)
ORG 0A00H
DA2 DB 128 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,DA1
LEA DI,DA2
MOV CX,128
AGAIN: MOV AL,[SI]
INC SI
INC DI
LOOP AGAIN
LEA SI, DA1
LEA DI, DA2
MOV CX,128
NEXT: MOV AL,[SI]
MOV BL,[DI]
CMP AL,BL
JNZ ERROR
INC SI
INC DI
MOV BL,0FFH
LOOP NEXT
JMP EXIT
ERROR: MOV BL,00H
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START

7. 设变量单元A、B、C存放有3个数,若3个数都不为零,则求3个数的和,存放在D中; 若有一个为零,则将其余两个也清零,试编写程序。
答:
DATA SEGMENT
A DB ?
B DB ?
C DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
CMP A,00H
JNZ LP1
MOV B,0
MOV C,0
JMP LP4
LP1: CMP B,00H
JNZ LP2
MOV A,0
MOV C,0
JMP LP4
LP2: CMP C,00H
JNZ LP3
MOV A,0
MOV B,0
JMP LP4
LP3: MOV AL,A
ADD AL,B
ADD AL,C
MOV AH,4CH
LP4: INT 21H
CODE ENDS
END START

8. 有一个100个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素,试编程序在表内查找,若表内已有此元素,则结束; 否则,按顺序将此元素插入表中适当的位置,并修改表长。
答:
DATA SEGMENT
BUFF DB 100 DUP(?)
DA1 DB (?)
LENGTH DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV AL,DA1
MOV CX,100
FIND0: CMP BUFF[SI],AL
JZ EXIT
INC SI
LOOP FIND0
MOV DI,99
MOV SI,0
COMPARE: CMP BUFF[DI],AL
JG INSERT
MOV BL,BUFF[DI]
MOV BUFF[DI+1],BL
DEC DI
CMP DI,SI
JNL COMPARE
JMP EXIT
INSERT: MOV BUFF[DI+1],AL
MOV LENGTH , 101
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START

9. 内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。
答:
DATA SEGMENT

FIRST DD 34341212H
SECOND DD 78785656H
THIRD DB ?,?,?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,FIRST
LEA DI,SECOND
LEA BX,THIRD
MOV CX,4
CLC
AGAIN: MOV AL,BYTE PTR[SI]
MOV DL,BYTE PTR[DI]
ADC AL,DL
DAA
MOV BYTE PTR[BX],AL
INC SI
INC DI
INC BX
LOOP AGAIN
JC AA
MOV BYTE PTR[BX],0
JMP EXIT
AA: MOV BYTE PTR[BX],1
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START

10. 编写一段程序,接收从键盘输入的10个数,输入回车符表示结束,然后将这些数加密后存于BUFF缓冲区中。加密表如下:
输入数字: 0,1,2,3,4,5,6,7,8,9; 密码数字: 7,5,9,1,3,6,8,0,2,4。
答:
DATA SEGMENT
MITAB DB '7591368024'
CONT EQU $-MITAB
BUFF DB 10 DUP (?),'$'
YUANWEN DB 10 DUP (?),'$'
DATA ENDS
CODE SEGMENT
ASSUME CS∶CODE,DS∶DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV CX,CONT
INPUT: MOV AH,1
INT 21H
CMP AL,13
JZ EXIT
AND AL,0FH
MOV YUANWEN[SI] ,AL
INC SI
LOOP INPUT
EXIT : LEA BX,MITAB
MOV CX,SI
MOV SI,0
JIAMI: MOV AL,YUANWEN[SI]
XLAT MITAB
MOV BUFF[SI],AL
INC SI
LOOP JIAMI
MOV AH, 4CH
INT 21H
CODE ENDS
END START


11.试编程序,统计由40000H开始的16K个单元中所存放的字符“A”的个数,并将结果存放在DX中。
答:
DATA SEGMENT
DA1 DB 'A'
BUFF DB 4000H DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,4000H
MOV DS,AX
MOV BX,0
MOV CX,4000H
FIND: MOV AL,[BX]
MOV BL,DA1
CMP AL,BL
JNZ NEXT
INC DX
NEXT: INC SI
LOOP FIND
MOV AH,4CH
INT 21H
CODE ENDS
END START

12. 在当前数据段(DS),偏移地址为DATAB开始的顺序80个单元中,存放着某班80个同学某门考试成绩。按如下要求编写程序:
(1) 编写程序统计≥90分; 80分~89分; 70分~79分; 60分~69分,<60分的人数各为多少,并将结果放在同一数据段、偏移地址为BTRX开始的顺序单元中。
(2) 试编程序,求该班这门课的平均成绩为多少,并放在该数据段的AVER单元中。
答:
DATA SEGMENT
BUFF DW 80 DUP(?)
DA9 DB 0
DA8 DB 0
DA7 DB 0
DA6 DB

0
DA5 DB 0
AVER DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,80
COMPARE: MOV BX,0
CMP BUFF[BX],90
JB LP8
INC DA9
JMP NEXT
LP8: CMP BUFF[BX],80
JB LP7
INC DA8
JMP NEXT
LP7: CMP BUFF[BX],70
JB LP6
INC DA7
JMP NEXT
LP6: CMP BUFF[BX],60
JB LP5
INC DA6
JMP NEXT
LP5: INC DA5
JMP NEXT
NEXT: INC BX
LOOP COMPARE
MOV CX,80
XOR AX,AX
MOV BX,00
SUM: ADD AX,BUFF[BX]
INC BX
LOOP LP1
MOV CL,80
DIV CL
MOV AVER , AL
MOV AH,4CH
INT 21H
CODE ENDS
END START

13. 编写一个子程序,对AL中的数据进行偶校验,并将经过校验的结果放回AL中。
答:
JIOU PROC
PUSH CX
PUSH BX
XOR AH, AH
PUSH AX
MOV CL, 7
LOOP1: SAR AL, 1
ADC AH, 0
LOOP LOOP1
MOV AL, AH
XOR AH, AH
MOV BL, 2
DIV BL
MOV BL, AH
POP AX
ROR BL, 1
OR AL, BL
POP BX
POP CX
RET
JIOU ENDP

14. 利用上题的子程序,对80000H开始的256个单元的数据加上偶校验,试编程序。
CODE SEGMENT
ASSUME CS: CODE
START : MOV AX, 8000H
MOV DS, AX
MOV SI, 0
MOV CX, 256
LP: MOV AL, [SI]
CALL JIOU
MOV [SI], AL
INC SI
LOOP LP
MOV AH, 4CH
INT 21H
JIOU PROC
PUSH CX
PUSH BX
XOR AH, AH
PUSH AX
MOV CL, 7
LOOP1: SAR AL, 1
ADC AH, 0
LOOP LOOP1
MOV AL, AH
XOR AH, AH
MOV BL, 2
DIV BL
MOV BL, AH
POP AX
ROR BL, 1
OR AL, BL
POP BX
POP CX
RET
JIOU ENDP
CODE ENDS
END START

习题5

1. 试述DRAM的工作特点;与SRAM相比有什么长处和不足之处;说明它的使用场合。
答:DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。 而且是行列地址复用的,许多都有页模式。 SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且一般不是行列地址复用的。
与SRAM相比,DRAM价格便宜、速度慢、容量大,主要用来做主存储器,存储程序和数据;而SRAM主要用在Cache等对速度要求高的情况。

2. 试述DRAM刷新过程和正常读/写过程的区别。
答:刷新是以行为单位进行,且刷新过程中不能进行读写操作。

3. 设有一个具有20位地址和32位字长的存储器,问:
(1) 该存储器能存储多少个字节的信息?
(2) 如果存储器由512K*8位SRAM芯片组成,需要多少片?
(3) 需要多少位作芯片选

择?
答:(1)该存储器能存储4MB的信息。
(2) 需要8片512K*8位的芯片。
(3) 需要1位做芯片选择。

4. 对于8K×8位RAM组成的存储器系统,若某组的起始地址为08000H,则其末地址为多少?
答:末地址为9FFF.

5. 在8088最大方式系统总线上扩充设计4K字节的SRAM存储器电路。SRAM芯片选用Intel 2114,起始地址从0000H。试画出此存储器电路与系统总线的连接图。
答:系统容量为 4K*8bit,芯片容量为1K*4bit,所以一共需要8片芯片
连接图如下:

6. 在8088系统总线上扩充设计8K的字节的SRAM存储器电路。SRAM芯片选用Intel 6264,起始地址从04000H开始,译码器电路74LS138.
(1) 计算此RAM存储区的最高地址是多少。
(2) 画出此存储器电路与系统总线的连接图。
(3) 编写程序实现对此存储区域进行自检。
答:(1)最高地址是05FFFH。
(2)

(3) MOV DX, 0FFE2H
L1: IN AL, DX
TEST AL, 01H
JZ L1
MOV AX, 1000H
MOV DS, AX
MOV DX, 2000H
MOV CX, 100
MOV DX, 0FFE0H
L2: IN AL, DX
MOV [DX], AL
INC BX
LOOPN L2

7. 在8086最小方式系统总线上扩充设计16K字节的SRAM存储器电路,SRAM芯片选用Intel 6264,起始地址从04000H开始,译码器电路采用74LS138.
(1) 计算此RAM存储区域的最高地址是多少
(2) 画出此存储器与总线的连接图。
答:(1) 07FFFH
(2)



习题6

1. 什么是接口?接口的功能是什么?
答:位于主机与外设之间,用来协助完成数据传送和控制任务的逻辑电路称为接口电路,接口电路对输入/输出过程起缓冲和联络作用。接口的功能是有,数据缓冲功能,联络功能,寻址功能,预处理功能,中断管理功能。

2. 计算机对I/O端口编址时通常采用哪两种方法?在8086系统中,用哪种方法进行编址?
答:I/O端口和存储器统一编址;I/O端口单独编址。8086系统采用I/O端口单独编址方式。

3. CPU和输入/输出设备之间传送的信息有哪几类?
答: 数据信息,控制信息,与状态信息。

4. 简述CPU与外设进行数据交换的几种常用方式.
答: 程序控制方式: 特点是依靠程序的控制来实现主机和外设的数据传送,可分为无条件传送方式和查询方式.
中断控制方式: 每次输入和输出一个数据,CPU都要检查外设的状态。
直接存储器存取控制方式: cpu不参加数据传送,而是由DMA控制器来实现内存与外设,外设与外设之间的直接传递。
通道方式:可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。
外围处理机方式:由PPU独立于主机工作,减少了CPU控制外设的负担。

5.无条件

传送方式适用哪些场合?查询方式原理怎样?主要用在什么场合?
答:无条件传送适用于简单的输入/输出设备,CPU可以随时读取或接受状态。这些信号变化缓慢,当需要采集数据时,无需检查端口,就可以立即采集数据,直接用输入/输出指令完成。无条件传送方式主要用于控制CPU与低俗I/O接口之间的信息交换。

7.查询式传送方式有什么优缺点?中断方式为什么能弥补查询方式的缺点?
答:查询传送方式CPU通过程序不断查询相应设备的状态,状态不符合要求,则CPU需要等待;只有当状态信号符合要求时,CPU才能进行相应的操作。中断方式提高了计算机系统中信息处理的并行和处理器效率,中断可以实现同步操作,实时处理等功能。

8. 8088/8086中断向量表的作用是什么?
答:中断向量表建立了不同的中断源与其相应的中断服务程序首地址之间的联系,它是CPU在响应中断时可以依据中断类型码自动转向中断服务程序。

9. 什么叫中断向量?它放在哪里?对于1CH的中断向量在哪里?如果1CH的中断程序从5110H开始:2030H开始,则中断向量应该怎样存放?
答:中断向量即用来提供中断入口地址的一个指针。

10. 8259中IRR, IMR, ISR三个寄存器的作用是什么?
答:⑴中断请求寄存器IRR
8259A有8条外部中断请求输入信号线IR0-IR7,每一条请求线上有一个相应的触发器来保存请求信号,它们形成了中断请求寄存器IRR(Interrupt Request Register)。
⑵中断屏蔽寄存器IMR
IMR(Interrupt Mask Register)用来存放屏蔽位信息,IMR的每一位可以禁止IRR中对应位的中断请求输入信号进入。
⑶中断服务寄存器ISR
ISR(Interrupt Service Register)存放当前正在进行服务的所有中断。ISR中相应位的置位是在中断响应的 脉冲期间,由优先权判决电路根据IRR中各请求位的优先权级别和IMR中屏蔽位的状态,将中断的最高优先级请求位选通到ISR中。

11. 类型号为20H的中断服务程序入口符号地址为INT-5,试写出中断向量的装入程序片段。
答:MOV AX, 0
MOV DS, AX
MOV SF, 20H*4
LEA AX, IMS
MOV [IS], AX
MOV AX, SEQ, INTS
MOV [SI+2], AX

12. 简述DMA控制器同一般接口芯片的区别。
答:DMA控制器能给出访问内存所需要的地址信息,并能自动修改地址指针,也能设定和修改传送的字节数,还能向存储器和外设发出相应的读/写控制信号。在DMA传送结束后,它能释放总线,把对总线的控制权又交还给CPU。用DMA方式传输数据时,不需要进行保护和恢复断点及现场之类的额外操作。

13. 简述8237A3种基本传送类型的特点。
答:单次传送方式:每次DMA操作只传送1B,然后就自动把总线控制权交给CPU,若还有通道请求信

号,则DMAC则再重新向CPU发出总线请求,获得控制权后责传送下一B数据。
数据块传送:在进入DMA操作后,就连续传送数据,直到整块数据全部传送完毕,在字节数减为0或外界输入终止信号时,才会将总线控制权交还给CPU。
请求传送:这种方式也可以用于成块数据传输。这种方式适用于准备好传送数据时,发出通道请求;若数据未准备好时,就使通道请求无效,将总线控制权交还给CPU。

习题7

1. 并行接口有何特点?其应用场合如何?
答:一个并行接口包含状态信息,控制信息,和数据信息,这些信息分别存放在状态寄存器,控制寄存器和数据缓冲缓冲寄存器。从并行接口的电路结构来看,它有硬连接线接口和可编程接口之分。硬连接线接口不能用软件编程方法加以改变,而可编程接口可用软件编程方式加以改变。其应用于打印机,IEEE488接口,开关量接口,控制设备接口等。

2. 可编程并行芯片8255有哪几种工作方式?其差别何在?他们在危机系统中的连接方法有什么不同?
答:8255A有3种工作方式:称为方式0,方式1和方式2。
其中A口可以工作在3种方式中的任一种;B口只能工作在方式0和方式1;C口通常作为控制信号使用,配合A口和B口的工作。
①方式0:基本的输入输出方式
方式0之所以被称为基本的输入输出方式,是因为在这种方式下,A口、B口和C口(C口分为2个4位使用)都可提供简单的输入和输出操作,对每个口不需要固定的应答式联络信号。
工作在方式0下,在程序中可直接使用输入指令(IN)和输出(OUT)指令对各口进行读写。方式0的基本定义如下:2个8位的口和2个4位的口。任何一个口都可以作为输入或输出。输出可以被锁存。输入不能锁存。
方式0一般用于无条件传送的场合,不需要应答式联络信号,外设总是处于准备好的状态。也可以用作查询式传送,查询式传送时,需要有应答信号。可以将A口、B口作为数据口使用。把C口分为2部分,其中4位规定为输出,用来输出一些控制信息;另外4位规定为输入,用来读入外设的状态。利用C口配合A口和B口完成查询式的I/O操作。
②方式1:选通输入/输出方式
在这种方式下,当A口和B口进行输入输出时,必须利用C口提供的选通和应答信号。而且这些信号与C口中的某些位之间有着固定的对应关系,这种关系是硬件本身决定的不是软件可以改变的。由于工作在方式l时,要由C口中的固定位来作为选通和应答等控制信号,因此称方式1为选通的输入/输出方式。
方式1的基本定义如下:分成2组(A组和B组)。每组包含一个8位的数据口和1个4位的控制/数据口。8位的数据口既可以作为输入

也可以作输出,输入和输出都可以被锁存。4位的控制/数据口用于传送8位数据口的控制和状态信息。
③方式2:带选通的双向传输方式
这种双向的传输方式,8255A可以向外设发送数据,同时CPU通过这8位数据线又接收外设的数据。因此称为双向的传输方式。
方式2的基本定义如下:只能适用于A口。一个8位的双向口(A口)和1个5位的控制口(C口)。A口的输入和输出都可以被锁存。5位的控制口用于传送8位双向口的控制和状态信息。
当A口工作在方式2时,由PA7~PA0作8位数据线,因为要由C口对A口进行控制,所以称为带选通的双向传输方式。C口对A口的控制信号如图8.20所示,工作时序如图8.20所示。在这种方式下,C口中有5位PC7一PC3作为控制信号和状态信息使用,剩下的3位PC2~PC0可作为简单的输入/输出线使用。当控制字的D0位为1时PC2~PC0作输入;当控制字的D0位为0时PC2~PC0作输出。

3. 可编程接口芯片8255的控制字有哪两个?其控制字及每位的含义是什么?
控制字分为2种:分别称为方式选择控制字和端口C置1/置0控制字。根据控制寄存器的D7位的状态决定是哪一种控制字。
①方式选择控制字
方式选择控制字用来决定8255A三个数据端口各自的工作方式,它的格式如图所示。它由一个8位的寄存器组成。

②口C置1/置0控制字
8255A在和CPU传输数据的过程中,经常将C口的某几位作为控制位或状态位来使用,从而配合A口或B口的工作。为了方便用户,在8255A芯片初始化时,C口置1/置0控制字可以单独设置到C口的某一位为0或某一位为1,具体的格式如图所示。


4. 假定8255的端口地址分别为0060H,0063H,编写出下列各情况的初始化程序:
(1) 将A口,B口设置方式0,端口A和C作为输入口,B作为输出口
(2) 将A口设置成方式1,输入口,PC6,PC7作为输出端,B口设置成方式1,输入口
答:(1)MOV AL, 99H
MOV DX, 0063H
OUT DX, AL
(2) MOV AL, 0B6H
MOV DX, 0063H
OUT DX, AL

5. 设8253计数器0~2和控制字I/O地址依次F8H~FBH,说明如下程序的作用。
MOV AL, 33H
OUT 0FBH, AL
MOV AL, 80H
OUT 0F8H, AL
MOV AL, 50H
OUT 0F8H, AL
答:计数器0,方式1,写两个字节
控制字节送到控制字寄存器
计数值的低位
写低位
计数初值的高位
写高位

6. 定时/计数器芯片Intel 8253占用几个端口地址?各个端口分别对应什么?
答:8253占用4个端口地址,低地址分别为计数器0,计数器1,计数器2,最高地址端口对应控制字寄存器。

7. 试按如下要求分别编写8253的初始化程序,已知8253的计数器0~2和控制字I/O地址依次为04H~07H
(1)计数器1工作在方式0,仅用8位二进制计数器,计数初值为128

2)计数器0工作在方式1,按BCD码计算,计数值为3000
(3)计数器工作在方式2,计数值为02F0H
答:(1) MOV AL, 50H
OUT 07H, AL
MOV AL, 128
OUT 05H, AL
(2) MOV AL, 33H
OUT 07H, AL
MOV AX, 3000
OUT 04H, AL
MOV AL, AH
OUT 04H,A;
(3) MOV AL, 0B4H
OUT 07H, AL
MOV AL, 0F0H
OUT 06H,AL
MOV AL, 02H
OUT 06H, AL

8. 设一个8253的计数器0产生20ms的定时信号,试对它进行初始化编程。
答:根据题意,控制格式字为00110100B
假设8253的时钟输入是8284时钟发生器发出的2.3864MHZ经二分频得到
所以,计数次数为23864
程序段如下:
MOV AL , 34H
MOV DX, CTRLPORT
OUT DX, AL
MOV AX, 23864
MOV DX , PORT0
OUT DX, AL
MOV AL, AH
OUT DX, AL


9.让一个计数器3工作在单稳态方式,让它产生15ms的脉冲宽度。
答:方式字为0B2H或0B3H
计数器初值:30000

10.请把一个8253与8086CPU相连,地址为2FF0~2FF3H。


11. 什么叫异步工作模式?画出异步工作方式时8255A和TXD和RXD线上的数据格式。什么叫同步工作方式?什么叫双同步字符方式?外同步和内同步有什么区别?
答:串行工作方式分为同步方式和异步方式。
异步工作方式时,两个字符之间的传输间隔是任意的,所以,每个字符的前后都要用一些数位来作为分隔位。在采用异步工作方式时,非数据信息比例比较大,而且,信息有效率比同步方式低,在异步方式下,接收方的时钟频率和发送方的时钟频率不必完全一样,而只要比较像近,即不超过一定的允许范围就行了。
异步方式时的数据格式(略)。
同步方式时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为信息帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步方式下,非数据信息比例比较小,要求进行信息传输的双方必须用同一个时钟进行协调,正是这个时钟确定了同步串行传输过程中每1位的位置,而且,在传输数据的同时,还必须传输时钟信号。
双同步方式,就是要在测得输入移位寄存器的内容和第一个同步字符寄存器的内容相同后,再继续检测此后的输入移位寄存器的内容是否与第二个同步字符寄存器的内容相同,如果不同,则重新比较输入移位寄存器和第一个同步字符寄存器的内容,如果相同,则认为同步已经实现。
外同步和内同步的区别:在外同步情况下,和内同步过程有所不同,因为这时是通过在同步输入端SYNDET加一个高电位实现同步的,SYNDET端一出现高电平,8251A就会立刻脱离对同步字符的搜索过程,只要此高电位

维持一个接收时钟周期,8251A便认为已经完成同步。
同步方式时的数据格式(略)。

12.什么是A/D, D/A转换器?
答:A/D是将模拟信号转换成数字信号的电路,称为模数转换器(analog to digital converter);
D/A是将数字信号转换为模拟信号的电路称为数模转换器(digital to analog converter)。

13. DAC0832有哪几种工作方式?每种工作方式适用于什么场合?每种方式是用什么方法产生的?
答:DAC0832可实现双缓冲、单缓冲和直通三种工作状态。
①双缓冲方式
所谓双缓冲方式,就是把DAC0832的输入锁存器和DAC寄存器都接成受控锁存方式。
适用于多个DAC0832同时输出的情况。采用的方法是先别分别是这些DAC0832的输入寄存器接受数据,在控制这些DAC0832同时传送数据到DAC寄存器以实现都多个DAC转换同步输出
②单缓冲方式
所谓单缓冲方式就是使DAC0832的输入锁存器和DAC寄存器有一个处于直通方式,另一个处于受控的锁存方式。此方式只是用只有一路模拟量输出或几路模拟量非同步输出的情况。采用的方法是控制输入寄存器和DAC寄存器同时接受数据,或者只有用输入寄存器而把DAC寄存器接成直通方式。
③直通方式
适用于连续反馈控制线路中。方法是数据不通过缓冲器,即WR1,WR2,XFER,CS均匀接地,ILE接高电平。此时,必须通过I/O接口与CPU连接,以匹配CUP与D/A的转换。

14. 某8位D/A转换器芯片,输出为0~5V,当CPU分别为80H,40H,10H时,其对应的输出电压各是多少?
答:80H时 128/256*5V=2.5V
40H时 64/256*5V=1.25V
10H时 16/256*5V=0.3123V

15. ADC把模拟量转换为数字量信号,转换步骤是什么?转换过程用到什么电路?
答:ADC把模拟量转换为数字量信号,分为四步来完成:采样、保持、量化、编码。转化过程可以用逐次逼近型电路、V/F转换型电路和双积分型电路。

16. ADC与微处理器的接口任务是什么?
答:ADC与微处理器接口的基本任务是:向ADC转发启动转换信号;向CPU提供转换结束信号,把转换好的数据送入微处理器。

17. ADC中的转换结束信号(EOC)起什么作用?
答:是转化结束信号,表示当前的A/D转换已经完成,可作为查询信息,也可接中断申请信号。

18. 如果ADC0809与微机接口采用中断方式,则EOC应如何让与微处理器连接?
答:可采用直接与CPU INTR脚连接,或通过8259A接CPU .
设ADC0809的端口号位PORTAD,则在指令OUT PORTAD,AL执行后,A/D转换器开始转换转换EOC发一个高电平为转化结束,此信号产生中断请求,CPU响应中断后,去执行中断处理程序,取结果IN AL,PORTAD,此时,M/IO,RD有效,CPU获得转换结果。


相关主题
文本预览
相关文档 最新文档