【微机原理 实验】 十进制数的BCD加、减法编程实验 (含汇编代码)

实验二 十进制数的BCD加、减法编程实验

 

更多微机实验:https://blog.csdn.net/yxp189/column/info/39992 

                         汇编语言-微机原理与接口技术-实验

注意未经允许,请勿转载!

           转载请标明出处~

适用课程:微机原理与接口技术(实验)

选用教材:微型计算机原理与接口技术-中国科学技术大学出版社

 

一、实验要求和目的    

1.熟悉BCD码的基本知识 

2.熟悉汇编语言BCD码多字节加减法基本指令的使用方法; 

3.掌握BCD码调整指令的使用方法。

二﹑实验内容

   编写程序,从键盘输入任意2个数,实现

    1. 两数相加,结果显示在屏幕上.

    2. 两数相减,结果显示在屏幕上.

 

实验代码:

①实验内容(1)

    两数相加,结果显示在屏幕上.

;author:YXP
;CSDN:yxp189
;e-mail:[email protected]
;如有问题,欢迎和我联系~
;转载请标明出处~

STACKS  SEGMENT   STACK       
              DW        128 DUP(?)  
      STACKS  ENDS
       DATAS  SEGMENT              
        NUM1  DB        4  DUP(0)
        NUM2  DB        4  DUP(0)
         SUM  DB        5  DUP(0)
       DATAS  ENDS
       CODES  SEGMENT             
              ASSUME    CS:CODES,DS:DATAS
      START:  MOV       AX,DATAS   
              MOV       DS,AX
              MOV       CX,4
              MOV       SI,OFFSET NUM1
              
      READ1:  MOV       AH,01H
              INT       21H
              MOV       [SI],AL
              INC       SI
              LOOP      READ1
              
              MOV       CX,4
              MOV       SI,OFFSET NUM2
      READ2:  MOV       AH,01H
              INT       21H
              MOV       [SI],AL
              INC       SI
              LOOP      READ2
       
              MOV       DI,OFFSET SUM
              MOV       CX,4
              
         OP:
              MOV       AH,00H
              MOV       SI,OFFSET NUM1
              MOV       AL,[BX][SI]
              PUSH      SI
              MOV       SI,OFFSET NUM2
              MOV       DL,[BX][SI]
              ADC       AL,DL
              AAA
              
              INC       BX
              ADD       [DI],AL
              AAA
              INC       DI
              MOV       [DI],AH
              
              LOOP      OP
              MOV       [DI],AH
              
              
              MOV       CX,5
              MOV       SI,OFFSET SUM
              MOV       BX,4
       OUT2:  MOV       AH,02H
              MOV       DL,[BX][SI]
              OR        DL,30H
              INT       21H
              DEC       BX
              LOOP      OUT2
                            
              MOV       AX,4C00H   
              INT       21H
       CODES  ENDS
              END       START

①实验内容(2)

    两数相减,结果显示在屏幕上.

;author:YXP
;CSDN:yxp189
;e-mail:[email protected]
;如有问题,欢迎和我联系~
;转载请标明出处~

STACKS  SEGMENT   STACK  
              DW        128 DUP(?)
      STACKS  ENDS
       DATAS  SEGMENT        
        NUM1  DB        5  DUP(0)
        NUM2  DB        4 DUP(0)
         SUM  DB        5  DUP(0)
       DATAS  ENDS
       CODES  SEGMENT       
              ASSUME    CS:CODES,DS:DATAS
      START:  MOV       AX,DATAS   
              MOV       DS,AX             
              MOV       CX,5
          MOV       SI,OFFSET NUM1
              MOV       BX,4
      READ1:  MOV       AH,01H
              INT       21H
              MOV       [BX][SI],AL
              DEC       BX
              LOOP      READ1
              
       OUTM:  MOV       AH,02H
              MOV       DL,2DH
              INT       21H
              
              MOV       CX,4
              MOV       BX,3
              MOV       SI,OFFSET NUM2
      READ2:  MOV       AH,01H
              INT       21H
              MOV       [BX][SI],AL
              DEC       BX
              LOOP      READ2
      
       OUTE:  MOV       AH,02H
              MOV       DL,3DH
              INT       21H
                            
              CLC
              MOV       DI,OFFSET SUM
              MOV       BX,0000H
              MOV       CX,4
         OP:
              MOV       AH,00H
              MOV       SI,OFFSET NUM1
              MOV       AL,[BX][SI]
              MOV       SI,OFFSET NUM2
              MOV       DL,[BX][SI]
              
              SBB       AL,DL
              AAS
              
              MOV       [BX][DI],AL
              INC       BX
              LOOP      OP
              
              MOV       AL,00H
              MOV       SI,OFFSET NUM1
              MOV       DL,[BX][SI]
              SBB       DL,AL
              AAS
              MOV       AL,DL
              MOV       SI,OFFSET SUM
              MOV       [BX][DI],AL
              
              
              MOV       CX,5
              MOV       SI,OFFSET SUM
              MOV       BX,4
       OUT2:  MOV       AH,02H
              MOV       DL,[BX][SI]
              OR        DL,30H
              INT        21H
              DEC       BX
              LOOP      OUT2
                            
              MOV       AX,4C00H   
              INT       21H
       CODES  ENDS
              END       START

 

你可能感兴趣的:(汇编语言)