微机原理习题7_答案(部分)

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

习题7答案

1.请编写完整8086汇编语言程序统计0801~0803班计算机原理考试成绩:

●假设成绩存放在数据段0000H开始的85个字节单元中;

●将成绩从高到低进行排序;

●统计最高成绩和最低成绩,分别存放在字节变量max和min单元中;

●统计不及格人数,存放在字节变量var1中;

●统计90~99分人数,存放在字节变量var2中;

●计算85人平均成绩,存放在字节变量avg中;

data segment para

org 0056H

max db 0

min db 0

var1 db 0

var2 db 0

avg db 0

sum dw 0

cnt equ 85

data ends

ss_seg segment stack

dw 100 dup(0)

ss_seg ends

code segment para

assume cs:code, ds:data, ss:ss_seg

main proc far

mov ax, data

mov ds, ax

mov cx, cnt-1

circle1: ; sort the score

push cx

mov bx, 0

mov dx, 0

circle2:

mov al, [bx]

cmp al, [bx + 1]

jae next

xchg al, [bx + 1]

mov [bx], al

mov dx, 1

next:

inc bx

loop circle2

pop cx

cmp dx, 1

jz main1

loop circle1

main1:

mov al, [0000H] ; get the max

mov max, al

mov al, [0054H] ; get the min

mov min, al

mov cx, cnt ; calculate var1, var2 and avg

mov bx, 0

circle3: mov al, [bx]

mov ah, 0

add sum, ax ; get the sum of score

cmp al, 90

jae main2

cmp al, 60

jb main3

jmp main4

main2: inc var2 ; 90~99 number

jmp main4

main3: inc var1 ; < 60 number

main4: inc bx

loop circle3

mov dl, cnt

mov ax, sum

div dl

mov avg, al ; get the average score

mov ax, 4c00h

int 21h ; return OS

main endp

code ends

end main

2 如图6-1所示,以IBM-PC/XT计算机为核心构成的炉温控制系统。其中8255的A组与B组工作在方式0,8253定时器0工作在方式3方波发生器方式,8253输入计数频率为100KHz。

1)试说明8259、8253、8255使用的端口地址;(3分)

2)芯片初始化(10分)

●单片8259工作在完全嵌套方式,中断非自动结束,中断申请输入IR0~IR7

为边沿触发,IR7对应中断类型码为0FH,编写8259初始化子程序,命

名为INIT_8259;

●8253每定时500ms向8259申请中断,计算8253定时常数,并编写8253

初始化子程序,命名为INIT_8253;

●8255的A口和C口上半部作输入,B口及C口下半部作输出,编写8255

初始化子程序,命名为INIT_8255;

3)编写汇编程序,实现炉温的连续控制,要求包括主程序与中断服务程序:

●主程序完成中断向量的安装,8259、8253、8255初始化,以及开中断,

并要求1个小时后,停止控温;(假设系统已经提供中断向量安装子程序

INIT_INT,初始化时可直接调用INIT_INT、INIT_8259、INIT_8253、

INIT_8255)

●中断服务程序完成保护现场、中断处理、发EOI命令、恢复现场、中断

返回等操作;其中,中断处理要求每500ms通过8255的PA口读入一次

A/D数据,并启动下一次A/D转换,PC4平时为高电平,输出负脉冲到

START端,则启动A/D,转换结束时EOC端由低电平变为高电平,要

求每3秒通过PB口输出控制量给D/A转换器进行一次调节。(假设系统

已提供控制算法子程序PROC_CTRL,该子程返回参数为AL,返回参数

即是D/A需要输出的数字量)

答案:

1) 8259端口地址范围20H ~ 3FH

8253端口地址范围80H ~ 9FH

8255端口地址范围0A0H ~ 0BFH

2)INIT_8259 proc

mov al, 13h ;ICW1

out 20h, al

mov al, 08h ;ICW2

out 21h, al

mov al, 01h ;ICW4

out 21h, al

ret

INIT_8259 endp

3)INIT_8253 proc

mov al, 36h

out 83h, al

mov ax, 50000

out 80h, al

mov al, ah

相关文档
最新文档