内容发布更新时间 : 2024/11/10 2:08:48星期一 下面是文章的全部内容请认真阅读。
JNZ L2
MOV BYTE PTR【SI】,20H L2:INC SI
DEC CX JNZ L1
HLT
9.已知在当前数据段偏移地址为1000H开始的存储单元中,有一组ASCII码字符串,字符串长度为100,试编程将此字符串传送到当前数据段偏移地址为1500H开始的存储单元中,并使字符串的顺序与原来的相反。 MOV SI,1063H MOV DI,1500H MOV CX,100 L1:MOV AL,【SI】
MOV 【DI】,AL DEC SI INC DI DEC CX JNZ L1
HLT
10.设当前DS=2000H,从偏移地址0200H开始存放着100个无符号16位二进制数,要求找出这组数中的最大值和最小值,分别存放在2000:0500H单元和2000:0502H单元中。 MOV BX,0200H
MOV AX,【BX】 ;AX中放临时最大值 MOV DX,AX ;DX
中放临时最小值
ADD BX,2 MOV CX,99 AGAIN: CMP AX,【BX】
JG NEXT1 MOV AX,【BX】 NEXT1: CMP DX,【BX】
JNG NEXT MOV DX,【BX】 NEXT:
ADD BX,2 DEC CX JNZ AGAIN
MOV 【500H】,AX
MOV 【502H】,DX
HLT
11.若在当前数据段偏移地址1000H开始的10个存储单元中,存放着用BCD码表示的十进制数,每个单元中放两位BCD码,要求把它们分别转换为ASCII码,存放在偏移地址为2000H开始的存储单元中,高四位的BCD码转换成的ASCII码放在地址较高的单元。 MOV SI,1000H MOV DI,2000H MOV CX,10 TRANT: MOV AL,【SI】
INC SI MOV BL,AL AND AL,0FH
OR AL,30H;(ADD AL,30H)
MOV 【DI】,AL INC DI SHR BL,1 SHR BL,1 SHR BL,1 SHR BL,1 OR BL,30H MOV 【DI】,AL INC DI LOOP TRANT
HLT
12.已知当前DS=1500H,从偏移地址为0A00H开始的存储单元存放着100个8位带符号数,试编程将其中的正数送到当前数据段偏移地址为0B00H开始的存储单元中去,负数送到当前数据段偏移地址为0C00H开始的存储单元中去。 MOV SI,0A00H MOV DI,0B00H MOV BX,0C00H MOV CX,100 L1: MOV AL,【SI】
TEST AL,80H JNZ MIUS;负数
MOV 【DI】,AL
13
INC DI INC SI DEC CX JNZ L1 HLT MIUS: MOV 【BX】,AL
INC BX INC SI DEC CX JNZ L1
HLT
13.某外部可屏蔽中断的类型码为6BH,它的中断服务程序的入口地址为1000H:2040H。请编程将该中断服务程序的入口地址填入中断向量表中。
PUSH DS
15.已知一个存储器接口电路如下,求该存储系统的地址范围。例如
G2B=0 则A16、A17、A18、A19都为1 G1 =1 则A15 为1 由于译码器取Y0,则A14A13A12只能取000 则地址范围为: 111110000……00~~111110001……即: F8000H~F8FFFH 11 地址范围为F8000H-F8FFFH。
17.某微机系统的8253通道2接有一发光二极管,要使发光二极管以点亮2秒,熄灭2秒的间隔工作,其电路如图所示,试编写初始化程序。
解: T=4s 则 f=1/T=0.25Hz 计数初值:N=250*1000/0.25=1000000
SC1SC0RL1RL0M2M1M0BCD由于N>65536 故需要两个计数器,每个计数器初值为1000 程序如下:
STACK SEGMENT STACK
MOV AX,1000H MOV DS,AX MOV DX,2040H MOV AX,256BH INT 21H POP DS
14.编程检测50H端口输入的字节数据,若为正,将BL清0;若为负,将BL置为FFH。
MOV BL,0 IN AL,50H TEST AL,80H JZ EXIT MOV BL,0FFH EXIT: ┊
8253控制字格式
SC1SC0=00选择计数通道0 RL1RL0=00 计数器锁存命令
SC1SC0=01选择计数通道1 RL1RL0=01 只读/写低8位数据
SC1SC0=10选择计数通道2 RL1RL0=10 只读/写高8位数据
SC1SC0=11非法 RL1RL0=11 读/写16位数据,先低8位后高8位
M2M1M0=000 8253工作在方式0 BCD=1,为BCD计数制
M2M1M0=001 8253工作在方式1 BCD=0,为二进制计数制
M2M1M0=?10 8253工作在方式2 M2M1M0=?11 8253工作在方式3 M2M1M0=100 8253工作在方式4 M2M1M0=101 8253工作在方式5
DB 200 DUP(?) STACK ENDS CODE SEGMENT
ASSUME SS:STACK,CS:CODE START MOV AL,01110110B MOV DX,283H OUT DX,AL
14
MOV AL,10110110B OUT DX,AL MOV DX,281H MOV AX,1000 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,282H
MOV AX,1000 OUT DX,AL MOV AL,AH OUT DX,AL MOV AH,4CH INT 21H
CODE ENDS
END START
18.8255并行接口的PA口同A/D转换器相连接,PB口同7段LED显示器连接,PA、PB口都工作于方式0。 1)根据图3中连接,写出使7段显示器显示0-9的代码。
2)编制一程序段,从PA口读取数据,如果数据大于等于128,则7段LED显示“1”,否则显示“0”。已知PA口地址为60H,PB口地址为6lH。
(1) 0:11000000B
1:11111001B 2:10100100B
3:10110000B 4:10011001B 5:10010010B 6:10000011B 7:11111000B 8:10000000B 9:10011000B
(2) MOV BL,11111001B
IN AL,60H CMP AL,128 JAE SHOWOUT
MOV BL,11000000B
SHOWOUT:MOV AL,BL
OUT 61H,AL
问答题(注:本题中所指教材为李继灿的第3版)
1.什么是中断向量表?(见教材P235)在8086CPU的中断向量表中有多少个不同的中断向量?(见教材P235)若已知中断类型号,举例说明如何在中断向量表查找中断向量?(见教材P236)
2.接口电路的信息可分为哪几类?(见教材P214)
3.存储器与CPU连接应注意哪些问题?(见教材P192-193)
4.8086CPU系统为什么一定要用地址锁存器?(见教材P215-216)在最小模式中,CPU的哪一个控制线作为地址锁存器的控制线?(见教材P63)
5.CPU与外设交换数据的传送方式分为哪几种?(见教材P215-222)
15