发布时间 : 星期四 文章微机强化训练大题更新完毕开始阅读647d129402d276a200292e66
三、读程序题
1 下面的程序是将10个8位的无符号数按递减顺序排序,请将程序补充完整。 .MODEL SMALL .DATA
ARRAY
DB
05H,78H,0FFH,7BH,00H,8CH,20H,0A0H,0F
COUNT=$-BUF MAX MIN
DB ? DB ?
MOV INT 21H ENDS
AH,4CH INT 21H ENDS
START
CODE
CODE END
SUM DW ?
ENDS SEGMENT END START 3. 若X,Y,Z是连续存放在内存BLOCK开始的3个带符号字节数,试编写出计算:X*Y-Z的汇编语言源程序,结果存入RESULT单元中。 .MODEL SMALL DATA CODE 2. 编制一个查表程序将十六进制数2A49H转换成ASCII码,结果依次存入MEM数组的4个字节中,即程序执行后MEM中4个字节内ASSUME CS:CODE,DS:DATA
0H,60H .CODE .STARTUP MOV SI,OFFSET ARRAY MOV BX,9 AB1: MOV CX,BX DEC CX AGAIN:
MOV AL,[SI] INC
SI
CMP AL,[SI] JAE CD1 MOV AH,[SI] MOV [SI],AL DEC SI MOV [SI],AH INC SI
CD1:
LOOP AGAIN
DEC BX
JNZ… AB1
.EXIT END 四、编程题
1. 编程序将数据串(-10,0,23,12,-8,9)中最大数和最小数找出来,存入MAX和MIN中,并计算数据串中各数据项绝对值之和。 DATA SEGMENT
BUF DB -10,0,23,12,-8,9 START:
A1: CYCLE: NEXT1: NEXT2: A2:
MOV AX,DATA MOV DS,AX LEA
SI,BUF MOV CX,COUNT-1 MOV BL,[SI] MOV MAX,BL MOV MIN,BL
CMP BL,0 JGE A1 NEG BL MOV AL,BL MOV AH,0 INC SI MOV BL,[SI] CMP BL,MAX
JLE NEXT1 MOV MAX,BL CMP BL,MIN JGE NEXT2 MOV MIN,BL CMP BL,0
JGE A2
NEG BL MOV BH,0 ADD AX,BX
LOOP CYCLE MOV
SUM,AX
容成为:39H、34H、41H、32H。 2. DATA SEGMENT
NUM DW 2A49H MEM DB 4 DUP(?)
ARRAY
DB
30H,31H,32H,33H,34H,35H,36H,37H,38
H,39H
DB
41H,42H,43H,44H,45H,46H
DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA MOV DS,AX LEA BX,ARRAY
LEA
SI,MEM MOV DX,2A49H CYCLE: MOV AX,DX
AND AX,000FH
XLAT MOV [SI],AL INC SI MOV CL,4 SHR DX,CL
JNZ CYCLE
MOV
AH,4CH
.DATA
BLOCK
DB
15H,20H,30H
RESULT
DW
?
.CODE .STARTUP MOV BX,OFFSET BLOCK MOV AX,0 MOV AL,[BX]
IMUL BYTE PTR [BX+01H] MOV CX,AX MOV AL,[BX+02H]
CBW SUB CX,AX MOV
RESULT,CX .EXIT
END
4. 键盘每输入一个字符,若小于’A’,屏幕上显示字符’N’,否则显示字符’C’,直至输入回车结束。试编写程序。 CODE
SEGMENT ASSUME CS:CODE START:
AGAIN: MOV
AH,1 INT 21H CMP AL,0DH
JE
DOWN
CMP AL,41H JB
NEXT1 DL,'C' DL,'N' A19 1 G1 G2A74LSY0 输入,此时可从数据输入端口中测出纸币品种,1角纸币代码为01,2角纸币代码为02,5角纸币代码为03.状态端口D3=1后,把兑换的5分硬币数(十六进制)从数据输出端口输出,RAM 设数据输入端口地址为FCH,数据输出端口 CS MOV INC DEC CX MOV IN [DI],AL DI DX,0024H AL,DX MOV
JMP NEXT2
NEXT1: MOV MEMR & MEMW A Y1NEXT2: CALL DISPLAY JMP AGAIN
DISPLAY PROC
MOV AH,2 INT 21H
RET
DISPLAY ENDP DOWN: MOV AH,4CH
INT 21H CODE ENDS END START
三、问答题
1. 设有一个具有14位地址和8位字长的存储器,问该存储器容量有多大?如果存储器由1K*1静态存储器组成,需多少芯片?多少位地址作芯片选择?
2. 一台8位微机的地址总线为16条,其RAM存储器容量为32KB,首地址为4000H,且地址是连续的,问可用的最高地址是多少? 3. 分析下图所示的电路,片选方法为全部译码法,回答以下问题: (1)74LS138的作用是什么? (2)74LS138在什么条件下才工作? (3)RAM的地址范围是多少
A18A17 & G2B 16 A15 C AY7 14 B A13 A 1. 该存储器的容量为16KB,需128个芯片,4位地址作芯片选择。 2. 可用的最高地址是BFFFFH。 3. (1)74LS138的作用是作为地址译码器,产生片选控制信号。 (2)当A19 A18 A17 A17为0111,并且对内存储器的读或写信号有效时,74LS138才工作。 (3)RAM的地址范围:72000H~73FFFH
三、接口设计题 1. 现有两个输入设备,使用程序查询方式与CPU通信。当状态位D0=1时,为第1号设备输入字符;当状态位D1=1时,为第2号设备输入字符;当状态位D3=1时,两个设备中任意一个结束输入过程。设状态端口地址为0024H,1号设备数据端口地址为0026H,2号设备数据端口地址为0028H,输入字符缓冲区首地址分别为BUFF1和BUFF2,试编一程序完成从输入设备输入100个字符。 2. 现有一台硬币兑换器,平时等待纸币输入,只有从状态端口FAH查到D2=1时,才有纸币地址为FEH。编程完成以上要求。 解: .MODEL SMALL .DATA BUFF1
DB 100 DUP(?)
BUFF2 DB 100 DUP(?)
.CODE .STARTUP LEA SI,BUFF1 LEA DI,BUFF2 MOV CX,100 TEST0:MOV DX,0024H
IN AL,DX TEST AL,01H JZ TEST1 IN1:
MOV DX,0026H IN
AL,DX MOV [SI],AL INC SI DEC CX MOV DX,0024H IN AL,DX TEST
AL,08H JZ
IN1
JMP NEXT TEST1:TEST AL,02H JZ NEXT IN2:
MOV
DX,0028H
IN
AL,DX
TEST
AL,08H JZ
IN2 NEXT: CMP CX,0
JNZ
TEST0
.EXIT END 2.
TEST1:IN AL,0FAH TEST
AL,04H JZ TEST1 IN AL,0FCH CMP AL,01 JZ P1 CMP AL,02 JZ P2 CMP AL,03 JZ
P3
JMP DOWN
P1: MOV BL,02H JMP TEST2 P2: MOV BL,04H
JMP TEST2
P3: MOV BL,0AH TEST2:IN AL,0FAH TEST AL,08H JZ
TEST2 MOV
AL,BL
OUT 0FEH,AL
JMP TEST1
DOWN:
.EXIT MOV MOV MOV DX,00C6H AL,00001101B AL,00001000B 中。
(4)写出中断服务程序。 解:
1.8255A的口地址为:10010000B、10010100B、10011000B、10011100B,即90H、94H、98H、 OUT 91H,AL MOV
AL,00000011B
OUT 91H,AL PUSH DS OUT DX,AL OUT DX,AL 三、简单编程题
1. 某系统中8253芯片的端口地址为FFF0H~FFF6H,定义通道0工作在方式2,(3)向量地址=5BH*4=16CH
CLK0=2MHZ,要求输出OUT0为1KHZ的速率波;定义通道1工作在方式0,其CLK1输入外部计数事件,每计满1000个向CPU发出中断请求。试写出8253通道0和通道1的初始化程序。
2. 设8255A的4个端口地址为00C0H、00C2H、00C4H、00C6H,要求端口A工作在方式1输入,端口B工作在方式0输出,端口C的普通I/O线为输出,并且要求置PC6为1,PC4为0。 解:
1. ;通道0的初始化程序 MOV AL,00100101B MOV DX,0FFF6H OUT DX,AL
MOV AL,20H MOV
DX,0FFF0H
OUT DX,AL ;通道1的初始化程序
MOV AL,01110000B MOV DX,0FFF6H OUT DX,AL
MOV AX,999 MOV DX,0FFF2H OUT DX,AL MOV
AL,AH
OUT DX,AL
2.
MOV
AL,10110000B
OUT DX,AL 9CH。
8255A的工作方式控制字为10001000B 四、接口设计题 其接口程序为: 1. 接口连接图如下图所示,写出向打印机输 MOV AL,10001000B 出字符’A’的接口程序。(提示:当CPU得A0 OUT 9CH,AL MOV
AL,00000011B 和A1均为0时,BE0=0)。 OUT 9CH,AL CYCLE: IN
AL,98H 74LS
TEST AL,00100000B BEDB0~0G2BB
JNZ CYCLE M/G2A825IOAG打 MOV AL,’A’ Ycs OUT 94H,AL 1AC STB P MOV AL,00000010B
AB AA OUT 9CH,AL
AA AAPBU NOP NOP 2. 设8255A的A口工作在方式1,作为中端 NOP 方式下的字符打印机的接口,此时,若CPU MOV
AL,00000011B
发出控制信号通过8255A的C口向打印机发
OUT 9CH,AL
出数据锁存信号,则CPU送来打印的数据被2. (1)假设8255A的端口地址为80H~
锁存到打印机打印。打印机收到打印数据后向83H 8255A发出应答信号,此时8255A就发出中 MOV AL,10100000B 断请求,中端信号从8259A的IR3引入,中 OUT 83H,AL 端类型号为5BH。设中断服务程序必须装配在 MOV
AL,00001101B
2000H:2340H处,I/O端口地址任选。 OUT 83H,AL (1)试写出8255A的初始化程序。 (2)假设8259A的端口地址为90H、91H
(2)设8259A以固定优先权、完全嵌套、自 MOV AL,00010011B 动结束方式工作,试写出8259A的预置命令。 OUT 90H,AL
(3)将中端服务程序的地址填入中断向量表
MOV
AL,01011000B
MOV AX,0 MOV DS,AX MOV WORD PTR
[016CH],2340H
MOV WORD
[016EH],2000H
POP DS (4)
PUSH AX STI MOV AL,BL
OUT 80H,AL
CLI POP AX
IRET
PTR