【微机原理 实验】 十进制数的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:yxp189@protonmail.com
;如有问题,欢迎和我联系~
;转载请标明出处~

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:yxp189@protonmail.com
;如有问题,欢迎和我联系~
;转载请标明出处~

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

 

  • 9
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值