当前位置:文档之家› 微机原理复习题-程序

微机原理复习题-程序

1.试编制一程序,找出DA数据区50个字节无符号数的最大数,存放在MAX单元中。
(只要求编写功能部分)
LEA SI, DA ;建立地址指针
MOV CX, 50 ;建立数据个数计数器
MOV AL, [SI]
DEC CX
LOP: INC SI
CMP AL, [SI]
JAE NEXT
MOV AL, [SI] ;AL中数小,则把大数送AL中
NEXT:LOOP;OP
MOV MAX, AL ;存结果
MOV AH,4CH
INT 21H

2.设在DA开始的数据区中存有20个字节数据,试求20个数据的和,并将结果存入
DR存储单元中.(设和不超过255)
答: LEA SI, DA
MOV AL, 0
MOV CX, 20
LOP: ADD AL, [SI]
INC SI
DEC CX
JNZ LOP
MOV DR, AL
MOV AH, 4CH
INT 21H

3.设STR单元开始,有100字节数据,将该数据传送到DTR开始的单元中.
LEA SI, STR
LEA DI, DTR
MOV CX, 100
MOV DS, SEG STR
MOV DS, AX
MOV AX, SEG DTR
MOV ES, AX
CLD
REP MOVSB

编写一个程序,接收从键盘输入的10个十进制数字(0-9),输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为(注:请编写完整的程序)(13分);
输入数字: 0,1,2,3,4,5,6,7,8,9
密码数字: 7,5,9,1,3,6,8,0,2,4
DATA SEGMENT
SCODE DB 7,5,9,1,3,6,8,0,2,4
BUFFER DB 10 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV CX,10
LEA BX,SCODE
INPUT: MOV AH,01
INT 21H
CMP AL,0AH
JZ EXIT
AND AL,0FH
XLAT
MOV BUFFER[SI],AL
INC SI
LOOP INPUT
MOV AH,4CH
INT 21H
CODE ENDS
END START



65、已知某8255A在系统中占用88~8BH号端口地址,现欲安排其PA,PB,PC口全部为输出,PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序:
MOV AL, 80H
OUT 8BH,AL
MOV AL,ODH
OUT 8BH,AL
MOV AL,06H
OUT 8BH,AL

已知某输入设备的数据端口地址为40H,状态端口地址为41H,其中D0位为“1”时,表示“READY”状态。试编程实现:
j采用查询方式从该设备输入20个ASCII码表示的十进制数,并求出这20个十进制数的累加和;
k将此累加和转换成BCD码,并存放到NBCDH(百位数)和NBCDL(存十位和个位数)单元中。
注:只要求写出程序的可执行部分,可以不写任何伪指令。
MOV CX,20
MOV BL,0
INLOOP:IN AL,41H
TEST AL,01H
JZ INLOOP
IN AL,40H
AND AL,OFH ;ASCII十进制 (BCD)
ADD BL,AL
LOOp INLOOP ; 共输入20个

8255的编程。 设8255的端口地址为200H~203H。
(1)要求PA口方式1,输入

;PB口方式0输出;PC7~PC6为输入;PC1~PC0为输出。试写出8255的初始化程序。
(2)程序要求当PC7=0时置位PC1,而当PC6=1时复位PC0,试编制相应的程序。
答:(1) MOV DX, 203H
MOV AL, 10111000B
OUT DX, AL
(2) MOV DX, 202H
IN AL, DX
MOV AH, AL
TEST AL, 80H
JNZ NEXT1
MOV DX, 203H
MOV AL, 00000011B ;对PC1置位
OUT DX, AL
NEXT1:MOV AL, AH
TEST AL, 40H
JZ NEXT2
MOV AL, 00000000B ; 对PC0复位
MOV DX, 203H
OUT DX, AL
NEXT2:………

若使用1个计数通道,则计数初始值n应为2×106(2MHz÷1Hz),而8253的计数通道为16位,其最大计数值是65536,远远小于2×106,所以使用1个计数通道不能实现。
MOV DX,343H
MOV AL,67H
OUT DX,AL
MOV DX,341H
MOV AL,10H ;计数通道1的计数初始值为1000
OUT DX,AL
MOV DX,343H
MOV AL,0A7H
OUT DX,AL
MOV DX,342H
MOV AL,10H ;计数通道2的计数初始值为1000
OUT DX,AL

某系统外接电路如图5,8255A口地址为2F0H~2F3H,请设计源程序,一次性的测试开关的位置,当K闭合时,LED亮,K断开时LED灭(提示:C口高4位应为方式0输入,低4位为方式0输出)。
CODE SEGMENT
ASSUME CS:CODE
BEG:
MOV DX,2F3H
MOV AL,
OUT DX,AL ;C口初始化
MOV DX,2F2H
IN AL,DX ;读C口
TEST AL,10000000B ;测试PC7并组织输出数据
JNZ XX
MOV AL,00000001B
OUT DX,AL ;数据写入C口使LED亮/灭
JMP ZZ
XX: MOV AL,00000000B
OUT DX,AL ;
ZZ: MOV AH,4CH
INT 21H ;返DOS
CODE ENDS
END BEG

设8253的选通地址为240H~243H,采用BCD计数,计数器2输出用于申请中断。如果计数器2的输入时钟频率为20KHz,输出信号每秒引起100次中断。要求 (1) 算出计数初值,(2) 编写初始化程序。(20分)
解:
(1) 初值为20KHZ/100=200或C8H
(2) 编程: MOV DX,243H
MOV AL,10110001B(或B1H)
OUT DX,AL ;
MOV DX,242H
MOV AL,8CH
OUT DX,AL ;
MOV AL,00H (该句也可以为:XOR AL,AL)
OUT DX,AL ;



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