46
10. 设一子程序求两个多字节数FIRST与SECOND之和,结果放在THIRD中,设这两个多字节数均为4个字节长 答: ADDSUB PROC
PUSHF PUSH AX PUSH BX PUSH CX PUSH SI PUSH DI LEA SI, FIRST LEA DI, SECOND LEA BX, THIRD MOV CX, 2 CLC
AA2: MOV AX, [SI]
ADC AX, [DI] MOV [BX], AX
47
PUSHF ADD SI, 2 ADD DI, 2 ADD BX, 2 POPF LOOP AA2 POP DI POP SI POP CX POP BX POP AX POPF RET
ADDSUB ENDP
48
49
八、接口芯片的综合编程题
(一)8255A
1. 若要求从8255A的A端口输出数据82H,请编写8255A的初始化程序和数据输出程序。现已知A口地址为80H,B口地址为81H,C口地址为82H,控制字寄存器地址为83H,8255A的方式控制字各位的含义如下表:
D7 1 D6 D5 D4 0:端口A输出 1:端口A输入 D3 0:C4~C7输出 1:C4~C7输入 D2 D1 D0 0:C0~C3输出 1:C0~C3输入 00:端口A工作于方式0 01:端口A工作于方式1 10、11:端口A工作于方式2 0:端口0:端口B工作B输出 于方式0 1:端口1:端口B输入 B工作于方式1
答:参考程序如下:
MOV AL, 1000 0000B ;置工作方式字,只要求了A是输出,其它任意,故都选用基本 ; 工作方式 OUT 83H, AL ;输出工作方式控制字到控制端口地址 MOV AL, 82H ;将要输出的数值先给AL; OUT 80H, AL ;将数值送到A端口,其地址号为80H
2:若A口方式2 要求发两个中断允许,即PC4和PC6均需置位。B口方式1要求使PC2置位来开放中断。,8255的端口地址为60--63H,请写出其初始化程序。
50