微机原理习题(4)

2018-12-09 23:48

call read jc err

call maxgys mov bx,ax mov ah,9 lea dx,msg3 int 21h mov ax,bx clc

call write jmp lab

err: lea dx,buf mov ah,9 code ends

4-39.答:(1)

data segment ;数据段 msg0 db ‘Input error!$’ data ends

sseg segment stack ;堆栈段 dw 64 dup(0) sseg ends

code segment ;代码段 assume cs:code,ds:data,ss:sseg

shushu proc near ;判断是否为素数子程序。入口参数为“ax”,出口参数为“cf=1为素数,cf=0不是素数,ax保存原数。” int 21h

lab: mov ah,4ch int 21h

include write.asm include read.asm code ends end main

4-38.答:

f segment stack ;堆栈段 dw 512 dup(0) f ends

code segment ;代码段 assume cs:code,ss:f

fibo proc near ;求费波那契数列第n项子程序。入口参数:项n压入到栈中。出口参数:结果在ax中。 push bp mov bp,sp push bx

mov bx,[bp+4] ;将项n弹出并保存到bx中 cmp bx,2 ;项n和2比较

jg f1 ;若项n大于2,则转f1求项n,否则结果保存到ax为1。 mov ax,1 jmp f2

f1: push cx ;现场保扩护

dec bx ;令bx-1,并求f(n-1)项的结果,暂存到cx中。 push bx call fibo mov cx,ax dec bx ;继续让bx-1,并求f(n-1)项的结果,保存到ax中。 push bx call fibo

add ax,cx ;求f(n)项,即为f(n-1)+f(n-2)。 pop bx ;恢复现场 pop bx pop cx

f2: pop bx pop bp ret

fibo endp

main: call read ;输入所求项n push ax ;将项n压入到栈中 call fibo ;调用子程序求第n项 clc

call write ;输出第n项 mov ax,4c00h int 21h

include read.asm include write.asm push bx push cx push dx cmp ax,1 jz ss1 cmp ax,2 jz ss1 mov bx,ax mov cx,2

ss0: mov dx,0 mov ax,bx div cx cmp dx,0 jz ss2 inc cx cmp cx,bx jl ss0

mov ax,bx ss1: stc jmp ss3

ss2: mov ax,bx clc

ss3: pop dx pop cx pop bx ret

shushu endp

main: mov ax,data mov ds,ax clc

call read inc ax

lab1: call shushu jc labe inc ax jmp lab1 labe: clc call write mov ah,4ch int 21h

include read.asm include write.asm code ends end main

4-40.答: code segment assume cs:code

chag proc near 参数:AX push bx push cx

;颠倒AX的子程序。入口参数:AX,出口 mov bx,ax mov cx,16 ch1: shl ax,1 rcr bx,1 loop ch1 mov ax,bx pop cx pop bx ret

chag endp

disp proc near ;按二进制显示AX中的数据。入口参数:AX。 push ax push bx push cx push dx mov cx,16 dp1: shl ax,1 mov bx,ax jc dp2 mov dl,’0’ jmp dp3

dp2: mov dl,’1’ dp3: mov ah,2 int 21h mov ax,bx loop dp1 pop dx pop cx pop bx pop ax ret

disp endp

main: mov ax,1011000111101001B ;主程序 call disp call chag call cr call disp mov ah,4ch int 21h

include cr.asm code ends end main

4-41.答: code segment assume cs:code

count proc near ;统计AX中二进制数据的1和0个数。入口参数:AX,出口参数:1的个数在bh中,0的个数在bl中。 push ax push cx xor bx,bx mov cx,16 co1: shl ax,1 jc co2 inc bl jmp co3 co2: inc bh co3: loop co1 pop cx pop ax ret

count endp

main: mov ax,1011000111101001B call count mov al,bh mov ah,0 call write mov ah,2 mov dl,’,’ int 21h mov al,bl mov ah,0 call write mov ah,4ch int 21h

include write.asm code ends end main

4-42.答: code segment assume cs:code disp proc near push ax push bx push cx push dx mov cx,16 dp1: shl ax,1 mov bx,ax jc dp2

mov dl,’0’ jmp dp3

dp2: mov dl,’1’ dp3: mov ah,2 int 21h mov ax,bx loop dp1 pop dx pop cx pop bx pop ax ret

disp endp main: clc call read call disp mov ah,4ch int 21h

include read.asm code ends end main

4-77.答:D

分析:过程的距离属性有两种:NEAR和FAR。

NEAR必须借助PTR才能指示无条件转移指令目标地址的属性,SHORT可以不必借助PTR直接指示无条件转移指令目标地址属性为段内短转移。

4-78. 答:C ,分析:段的定位类型有四种,分别是PAGE(页起始),起始地址以00H结尾,能被256整除;PARA(节起始),起始地址以0H结尾,能被16整除;WORD(字起始)起始地址末位为0,是偶地址;BYTE(字节起始)起始地址为任意边界。

4-79.答:分支结构 循环结构 (顺序可变)。

4-80. 答:保存现场 形成中断入口地址 执行中断服务程序 恢复现场。

4-81.答:变量是一个可存放数据的存储单元的名子,即存放数据存储单元的地址符号名。变量有三个属性:

〈1〉段属性(SEGMENT)变量段基址通常在定义变量的数据段的DS寄存器中。在指令中它们被隐含使用。

〈2〉偏移属性(OFFSET)是标号或变量所在地址距离段基址的偏移量值。它们在指令中以显示方式出现。

〈3〉类型属性(TYPE)指变量是按字节、字或双字操作。字节、字和双字分别用BYTE、WORD和DWORD定义。

4-82.答:分支结构 循环结构 (顺序可变)。

第5章 存储器 5-1. 什么是随机读写存储器? 5-2. 名词解释:RAM和ROM

5-3. 定性比较微型计算机的内存储器和外存储器的特点及组成情况。

5-4. 什么存储器属于外设,请举例。

5-5. 半导体存储器有RAM和ROM之分,它们各有什么特点 5-6. 什么是高速缓存?它的功能是什么?

5-7. 一片512K×8b的内存储器有多少条地址线?多少条数据线。

5-8. 如已知某半导体存储器芯片SRAM的引脚中有14根地址线和8根数据线,那么其存储容量应为多少?

5-9. 若存储器容量为256KB,若用2164(64K*1)芯片组成,需多少片,若改用2118(16K×1),需少片?

5-10. 简述IBM PC/XT中存储空间的分配使用情况。 5-11. CPU与主存储器连接时,要用片外译码器产生片选信号,片外译码的有几种方法?它们各有什么优点?

5-12. 某微机内存有8片64KB的RAM芯片组成,将它们安排在从20000开始的连续地址单元,请写出各片RAM的地址范围,画出芯片的地址引出端、片的选端和CPU总线之间的连接。

5-13. 用EPROM和SRAM 存储器芯片,构成8086CPU的64KB ROM和64KB RAM的存储空间,并将它们分别安排在1M空间的底部F0000H和顶部00000H。请选择合适的存储器芯片并画出该存储系统原理图。

5-1.答:可以随机的按指定地址向存储单元存入、取出或改写信息,所有单元的读写操作所需的时间完全相等的存储器,称为随机读写存储器。

第6章 输入输出和中断系统

6-1.试说明一般中断系统的组成和功能。

6-2.什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系? 6-3.什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不同?

6-4.试叙述基于8086/8088的微机系统处理硬件中断的过程。 6-5.在PC机中如何使用“用户中断”入口请求中断和进行编程? 6-6.8259A中断控制器的功能是什么?

6-7.8259A初始化编程过程完成那些功能?这些功能由那些ICW设定?

6-8.8259A在初始化编程时设置为非中断自动结束方式,中断服务程序编写时应注意什么?

6-9.8259A的初始化命令字和操作命令字有什么区别?它们分别对应于编程结构中那些内部寄存器?

6-10.8259A的中断屏蔽寄存器IMR与8086中断允许标志IF有什么区别?

6-11.若8086系统采用单片8259A中断控制器控制中断,中断类型码给定为20H,中断源的请求线与8259A的IR4相连,试问:对应该中断源的中断向量表入口地址是什么?若中断服务程序入

口地址为4FE24H,则对应该中断源的中断向量表内容是什么,如何定位?

6-12.试按照如下要求对8259A设定初始化命令字:8086系统中只有一片8259A,中断请求信号使用电平触发方式,全嵌套中断优先级,数据总线无缓冲,采用中断自动结束方式。中断类型码为20H~27H,8259A的端口地址为B0H和B1H。 6-13.比较中断与DMA两种传输方式的特点。 6-14.DMA控制器应具有那些功能?

6-15.8237A只有8位数据线,为什么能完成16位数据的DMA传送?

6-16.8237A的地址线为什么是双向的?

6-17.说明8237A单字节DMA传送数据的全过程。

6-18.8237A单字节DMA传送与数据块DMA传送有什么不同? 6-19.8237A什么时候作为主模块工作,什么时候作为从模块工作?在这两种工作模式下,各控制信号处于什么状态,试作说明。 6-20.说明8237A初始化编程的步骤。

6-21.8237A选择存储器到存储器的传送模式必须具备那些条件? 6-22.利用8237A的通道2,由一个输入设备输入一个32KB的数据块至内存,内存的首地址为34000H,采用增量、块传送方式,传送完不自动初始化,输入设备的DREQ和DACK都是高电平有效。请编写初始化程序,8237A的首地址用标号DMA表示。 6-23. 8086/8088系统中引入了哪些中断?是如何引入的? 6-24. 什么是可屏蔽中断?什么是非屏蔽中断?

6-25. 什么是中断向量?中断向量表指的是什么?中断向量表放在什么地方?

6-26. 假如中断类型为8,它的中断服务入口地址是多少? 6-27. 改错-DMA方式是指:由DMA控制器运行I/O程序,以实现外围设备与主存之间的数据直传。

6-28. 比较说明中断方式与DMA方式的异同? 6-29. 名词解释:CMOS、BIOS、Cache芯片

6-30. I/O端口有哪两种编址方式?8086的最大I/O寻址空间是多少?

6-31. 8086/8088系统中引入了哪些中断?是如何引入的? 6-32. 什么是可屏蔽中断?什么是非屏蔽中断?

6-33. 什么是中断向量?中断向量表指的是什么?中断向量表放在什么地方?

6-34. 假如中断类型为8,它的中断服务入口地址是多少? 6-35. 中断处理的过程是保存断点、( )、( )、( )、( ) 部分答案:

6-1.答:处理器内部应有中断请求信号的检测电路,输出中断响应信号,保存断点的逻辑,转向中断处理程序的逻辑,中断返回逻辑。系统中要有一中断控制器,管理多个中断源,提供处理机所需的中断处理信息。系统中请求中断处理的I/O接口电路要有提供中断请求信号及接收中断响应信号的逻辑。

6-2.答:处理机可处理的每种中断的编号为中断类型码。中断向量是指中断处理程序的入口地址,由处理机自动寻址。中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。在8086系统中,中断类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量。

6-3.答:硬件中断是通过中断请求线输入电信号来请求处理机进行中断服务;软件中断是处理机内部识别并进行处理的中断过程。硬件中断一般是由中断控制器提供中断类型码,处理机自动转向中断

处理程序;软件中断完全由处理机内部形成中断处理程序的入口地址并转向中断处理程序,不需外部提供信息。

6-4.答:以INTR请求为例。当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,清除IF、TF;8086将类型码乘4后得到中断向量入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求的响应过程。 6-5.答:PC机中分配给用户使用的中断是IRQ9,经扩展插槽B4引出,故把用户的中断请求线连接到B4上。在应用程序中,利用25H号系统调用将中断服务程序的入口地址写入对应0AH类型中断对应的中断向量表中去。在应用程序中把主片8259A D2屏蔽位清0,把从片8259A D1屏蔽位清0,使主片的IR2、从片的IR1可以输入中断请求。中断服务程序结束前向主片8259A发中断结束命令。应用程序结束之前对主片的IR2和从片的IR1进行屏蔽,关闭用户中断请求。

6-6.答:8259A中断控制器可以接受8个中断请求输入并将它们寄存。对8个请求输入进行优先级判断,裁决出最高优先级进行处理,它可以支持多种优先级处理方式。8259A可以对中断请求输入进行屏蔽,阻止对其进行处理。8259A支持多种中断结束方式。8259A与微处理器连接方便,可提供中断请求信号及发送中断类型码。8259A可以进行级连以便形成多于8级输入的中断控制系统。 6-7.答:初始化编程用来确定8259A的工作方式。ICW1确定8259A工作的环境:处理器类型、中断控制器是单片还是多片、请求信号的电特性。ICW2用来指定8个中断请求的类型码。ICW3在多片系统中确定主片与从片的连接关系。ICW4用来确定中断处理的控制方法:中断结束方式、嵌套方式、数据线缓冲等。

6-8.答:在中断服务程序中,在返回主程序之前按排一条一般中断结束命令指令,8259A将ISR中最高优先级位置0,结束该级中断处理以便为较低级别中断请求服务。

6-9.答:8259A的工作方式通过微处理器向其写入初始化命令字来确定。初始化命令字分别装入ICW1~ICW4内部寄存器。8259A在工作过程中,微处理器通过向其写入操作命令字来控制它的工作过程。操作命令字分别装入OCW1~OCW3内部寄存器中。8259A占用两个端口号,不同的命令字对应不同的端口,再加上命令字本身的特征位及加载的顺序就可以正确地把各种命令字写入对应的寄存器中。

6-10.答:IF是8086微处理器内部标志寄存器的一位,若IF=0,8086就不响应外部可屏蔽中断请求INTR引线上的请求信号。8259A有8个中断请求输入线,IMR中的某位为1,就把对应这位的中断请求IR禁止掉,无法被8259A处理,也无法向8086处理器产生INTR请求。

6-11.答:中断向量表入口地址为:0段的0090H地址。对应4FE24H中断服务程序入口,在向量表中定位情况:(0090H)=24H、(0091H)=00H、(0092H)=E0H、(0093H)=4FH。

6-12.答:ICW1=1BH (送B0H端口),ICW2=20H (送B1H端口),ICW4=03H (送B1H端口)

6-13.答:中断方式下,外设需与主机传输数据时要请求主给予中断服务,中断当前主程序的执行,自动转向对应的中断处理程序,控制数据的传输,过程始终是在处理器所执行的指令控制之下。直接存储器访问(DMA)方式下,系统中有一个DMA控制器,它是一个可驱动总线的主控部件。当外设与主存储器之间需要传输数据时,外设向DMA控制器发出DMA请求,DMA控制器向中央处理器发出总线请求,取得总线控制权以后,DMA控制器按照总线时序控制外设与存储器间的数据传输而不是通过指令来控制数据传输,传输速度大大高于中断方式。

6-14.答:DMA控制器应有DMA请求输入线,接收I/O设备的DMA请求信号;DMA控制器应有向主机发出总线请求的信号线和接收

主机响应的信号线;DMA控制器在取得总线控制权以后应能发出内存地址、I/O读写命令及存储器读写命令控制I/O与存储器间的数据传输过程。

6-15.答:I/O与存储器间在进行DMA传送过程中,数据是通过系统的数据总线传送的,不经过8237A的数据总线,系统数据总线是具有16位数据的传输能力的。

6-16.答:8237A的A0~A3地址线是双向的,当8237A被主机编程或读状态处于从属状态,A0~A3为输入地址信号,以便主机对其内部寄存器进行寻址访问。当8237A取得总线控制权进行DMA传送时,A0~A3输出低4位地址信号供存储器寻址对应单元用,A0~A3必需是双向的。

6-17.答:8237A取得总线控制权以后进行单字节的DMA传送,传送完一个字节以后修改字节计数器和地址寄存器,然后就将总线控制权放弃。若I/O的DMA请求信号DREQ继续有效,8237A再次请求总线使用权进行下一字节的传送。

6-18.答:单字节传送方式下,8237A每传送完一个字节数据就释放总线,传送下一字节时再请求总线的控制权。块传送方式下8237A必须把整个数据块传送完才释放总线。

6-19.答:8237A取得总线控制权后,开始进行DMA传送过程,此时8237A作为主模块工作。8237A在被处理器编程或读取工作状态时,处于从模块工作状态。8237A处于从模块时,若CS#=0、HLDA=0说明它正被编程或读取状态,IOR#与IOW#为输入,A0~A3为输入。8237A处于主模块时,输出地址信号A0~A15 (低8位经A0~A7输出,高8位经DB0~DB7输出)。8237A还要输出IOR#、IOW#、MEMR#、MEMW#、AEN、ADSTB等有效信号供DMA传送过程使用。

6-20.答:(1)写屏蔽字,阻止某通道的DMA请求。(2)写命令字(8号地址),确定信号有效电平、优先级方式、通道工作允许等。(3)写模式字(B号地址),确定某通道传送方式、传送类型、地址寄存器变化方式等。(4)置0先/后触发器。(5)设置地址寄存器、字节数寄存器的初值。(6)清除某通道屏蔽位,允许8237A响应其DMA请求。

6-21.答:必须使用8237A内部的暂存器作为数据传送的缓冲器。8237A通道0的地址寄存器存放存储器的源地址、通道1的地址寄存器存放存储器的目的地地址、字节计数器存放传送的字节数,建立通道0的软件DMA请求来启动这一传输过程。

6-22.答:设存储器页面寄存器内容已被置为3。8237A初始化程序如下:

MOV AL, 06H ;屏蔽通道2 MOV DX, DMA+0AH OUT DX, AL

MOV AL, 80H ;写通道2命令字:DREQ、 MOV DX, DMA+08H ;DACK高电平有效,正常 DUT DX, AL ;时序、固定优先级、允许8237A工作等。

MOV AL, 86H ;写通道2模式字:块传 MOV DX, DMA+0BH ;输、写传输、地址增、 OUT DX, AL ;禁止自动预置等。 MOV DX, DMA+0CH ;置0先/后触发器 OUT DX, AL

MOV AL, 00H ;设通道2基地址为4000H MOV DX, DMA+04H OUT DX, AL MOV AL, 40H OUT DX, AL

MOV AL, 0FFH ;设通道2基字节数为 MOV DX, DMA+05H ;7FFFH (32767D) OUT DX, AL MOV AL, 7FH OUT DX, AL

MOV AL, 02H ;清除通道2屏蔽。 MOV DX, DMA+0AH OUT DX, AL

MOV AL, 06H ;通道2发DMA请求 MOV DX, DMA+09H OUT DX, AL

6-27. 答:DMA方式是指,直接依靠硬件(或由DMA控制器硬件控制)实现外因设备与主存之间的数据直传。 6-28. 答:

(1)相同点:由随机请求引发。

(2)处理方法的不同:中断方式依靠执行中断处理程序,而DMA方式直接依

数,控制字是76H。设控制口的地址是200H,计数器0的地址是202H。程序段如下: MOV DX,200H MOV AL,76H OUT DX,,AL MOV DX,202H MOV AX,2000 OUT DX,AL MOV AL,AH OUT DX,AL

7-3.答:1.91MHz/25KHZ=76.4。即应向计数器装入的初值是76。

7-4.答:8255A的A端口,作为数据的输入、输出端口使用时都具

靠硬件实现。

(3)应用场合不同:中断方式适用于中低速I/O操作、处理复杂随机事件;)DMA方式适用简单、快速数据传送。

6-35.答:保存现场 形成中断入口地址 执行中断服务程序 恢

复现场

第7章 常用可编程外围接口芯片 7-1. 设8253三个计数器的端口地址为201H、202H、203H,控制

寄存器端口地址200H。试编写程序片段,读出计数器2的内容,

并把读出的数据装入寄存器AX。

7-2. 设8253三个计数器的端口地址为201H、202H、203H,控制

寄存器端口地址200H。输入时钟为2MHz,让1号通道周期性的

发出脉冲,其脉冲周期为1ms,试编写初化程序段。

7-3. 设8253计数器的时钟输入频率为1.91MHz,为产生25KHz的方波输出信号,应向计数器装入的计数初值为多少?

7-4. 8255A的3个端口在使用上有什么不同? 7-5. 如果串行传输速率是2400波特,数据位的时钟周期是多少秒? 7-6. 在远距离数据传输时,为什么要使用调制解调器?

7-7. 全双工和半双工通信的区别是什么?在二线制电路上能否进

行全双工通信?为什么?

7-8. 同步传输方式和异步传输方式的特点各是什么? 7-9. 在异步传输时,如果发送方的波特率是600,接收方的波特率是1200,能否进行正常通信?为什么? 7-10. 8251A在编程时,应遵循什么规则?

7-11. 试对一个8251A进行初始化编程,要求工作在同步方式,7

位数据位,奇校验,1个停止位。

7-12. 一个异步串行发送器,发送具有8位数据位的字符,在系统中使用一位作偶校验,2个停止位。若每秒钟发送100个字符,它的波特率和位周期是多少? 7-1答:

MOV AL,80H OUT 200H,AL IN AL,203H MOV BL,AL IN AL,203H, MOV BH,AL MOV AX,BX 7-2.答: 要输出脉冲周期为1ms,输出脉冲的频率是:1000 当输入时钟频率为2MHz时,计数器初值是:2000

使用计数器1,先读低8位,后读高8位,设为方式3,二进制计

有锁存功能。B端口和C端口当作为数据的输出端口使用时具有

锁存功能,而作为输入端口使用时不带有锁存功能。 7-5.答:数据位的时钟周期是:1/2400 = 4.17×10-4秒

7-6.答:在远距离传输时,通常使用电话线进行传输,电话线的频

带比较窄,一般只有几KHz,因此传送音频的电话线不适于传输

数字信号,高频分量会衰减的很厉害,从而使信号严重失真,以致

产生错码。使用调制解调器,在发送端把将要传送的数字信号调制

转换成适合在电话线上传输的音频模拟信号;在接收端通过解调,

把模拟信号还原成数字信号。

7-7.答:全双工和半双工通信,双方都既是发送器又是接收器。两

者的区别在于全双工可以同时发送和接收。半双工不能同时双向传

输,只能分时进行。在二线制电路上是不能进行全双工通信的,只

能单端发送或接收。因为一根信号线,一根地线,同一时刻只能单

向传输。 7-8.答:同步传输方式中发送方和接收方的时钟是统一的、字符与

字符间的传输是同步无间隔的。异步传输方式并不要求发送方和接

收方的时钟完全一样,字符与字符间的传输是异步的。

7-9.答:不能进行正常通信,因为发送方和接收方的波特率不同,

而接收端的采样频率是按传输波特率来设置。

7-10.答:8251在初始化编程时,首先使芯片复位,第一次向控制

端口(奇地址)写入的是方式字;如果输入的是同步方式,接着向

奇地址端口写入的是同步字符,若有2个同步字符,则分2次写入;

以后不管是同步方式还是异步方式,只要不是复位命令,由CPU

向奇地址端口写入的是命令控制字,向偶地址端口写入的是数据。

7-11.答:对原题目的补充改动,要求工作在内同步方式,2个同步

字符。方式字是:00011000B=18H。程序段如下:

XOR AX,AX

MOV DX,PORT

OUT DX,AL

OUT DX,AL OUT DX,AL ;向8251的控制口送3个00H MOV AL,40H

OUT DX,AL ;向8251的控制口送40H,复位

MOV AL,18H

OUT DX,AL ;向8251送方式字 MOV AL,SYNC ;SYNC为同步字符 OUT DX,AL OUT DX,AL ;输出2个同步字符 MOV AL,10111111B OUT DX,AL ;向8251送控制字 7-12.答:每个字符需要的发送位数是12位(数据位8位,校验位1位,停止位2位,起始位1位)。每秒发送100个字符共1200位。因此波特率为1200波特,位周期= 1/1200 ≈ 833μs。


微机原理习题(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:共31套的操作题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: