计算机组成原理实验 · 2022年2月3日 0

计算机组成原理——双字节BCD码(十进制数)加法

一、实验目的

熟悉8086汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码,了解如何调用系统提供的子程序。

二、实验内容

从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。

三、实验框图

四、实验步骤

    1、连线说明:

D3区:CS、A0、A1——A3区:CS1、A0、A1
D3区:PC0、PC1——F5区:KL1、KL2
D3区 :JP20、B、C——F5区:A、B、C

2、在F5区的键盘上输入4位被加数、加数

3、结果显示在F5区的数码管上

五、程序清单

 .MODELTINY 
EXTRNInitKeyDisplay:NEAR, Display8:NEAR, GetBCDKey:NEAR
EXTRNF1:BYTE  
 .STACK    100  
 .DATA  
BUFFERDB8 DUP(?) 
augendDB2 DUP(?);被加数
addendDB2 DUP(?);加数
 .CODE  
START:MOVAX,@DATA 
 MOVDS,AX 
 MOVES,AX 
 NOP  
 CALLInitKeyDisplay;对键盘、数码管扫描控制器8255初始化
 MOVF1,0   ;先清除显示,再接收键输入
START1:LEADI,augend 
 MOVCX,4   ;按键次数
 CALLGetBCDKey;得到双字节十进制数(被加数)
 MOVF1,1;接收到第一个键,才清除显示
 LEADI,addend 
 MOVCX,4   ;按键次数
 CALLGetBCDKey;得到双字节十进制数(加数)
 MOVAL,augend 
 ADDAL,addend;低位
 DAA  
 XCHGAL,AH 
 MOVAL,augend + 1 
 ADCAL,addend + 1;高位
 DAA  
 XCHGAL,AH 
 MOVBL,0 
 ADCBL,0   ;进位
 CLD  
 LEADI,BUFFER;存放显示结果
 CALLB1toB2;低位
 MOVAL,AH 
 CALLB1toB2;高位
 MOVAL,BL 
 STOSB  
 MOVAL,10H;最高三位消隐
 STOSB  
 STOSB  
 STOSB  
 LEASI,BUFFER+4 
 MOVCX,4 
 CALLBlackDisplay;将高位0消隐
 LEASI,BUFFER 
 CALLDisplay8 
 JMPSTART1 
;将一个字节压缩BCD码转换成二个字节非压缩BCD码
B1toB2PROCNEAR 
 PUSHAX 
 ANDAL,0FH 
 STOSB  
 POPAX 
 ANDAL,0F0H 
 RORAL,4 
 STOSB  
 RET  
B1toB2ENDP  
BlackDisplayPROCNEAR 
 STD  
 MOVDI,SI 
BlackDisplay1:LODSB ;将高位0消隐
 CMPAL,0 
 JNZExit 
 MOVAL,10H 
 STOSB  
 LOOPBlackDisplay1 
Exit:CLD  
 RET  
BlackDisplayENDP  
    
 ENDSTART