我是靠谱客的博主 还单身泥猴桃,最近开发中收集的这篇文章主要介绍[微机原理与接口控制】利用DOS调用实现简单的加法(2),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 要求实现:
(1)输出提示信息“PLEASE INPUT A”

(2)利用01H功能,获取输入A(A为二位数,如下B同理)

(3)对输入A进行处理实现ASCLL码到数值的转换

(4)输出提示信息"PLEASE INPUT B"

(5)利用01H功能,获取输入B

(6)对输入B进行处理实现ASCII码到数值的转换

(7)计算A+B并实现十六进制到BCD码的转换

实现软件:EMU8086

DATA SEGMENT ;数据段
     MSG1 DB 'PLEASE INPUT A',0DH,0AH,'$'
     MSG2 DB 0DH,0AH,'PLEASE INPUT B',0DH,0AH,'$'       
     MSG3 DB 0DH,0AH,'RESULT IS',0DH,0AH,'$'     
     MSG4 DB 0DH,0AH,'ERROR',0DH,0AH,'$' 
DATA ENDS

EXTRA SEGMENT;附加段
    
EXTRA ENDS

STACK SEGMENT;堆栈段
STAPN DB 100 DUP (00H) ;定义100字节空间
TOP EQU LENGTH STAPN    
STACK ENDS

CODE SEGMENT
MAIN PROC FAR  ;过程定义语句
    ASSUME CS:CODE,DS:DATA,ES:EXTRA,SS:STACK
START:
      MOV AX,DATA
      MOV DS,AX
      
      MOV AX,EXTRA
      MOV ES,AX
      
      MOV AX,STACK
      MOV SS,AX 
      
      ;写入代码       
      LEA DX,MSG1
      MOV AH,09H
      INT 21H 
      
    A:MOV AH,01H
      INT 21H    ;读入一个数的十位,放在AL中,读进来的数为ASCLL码  
      SUB AL,30H  ;转为原来的数
      MOV BH,AL   ;将十位放在BH中
      
      
      MOV AH,01H
      INT 21H    ;读入一个数的个位,放在AL中,读进来的数为ASCLL码  
      SUB AL,30H  ;转为原来的数
      MOV BL,AL   ;个位放在BL
      
      SHL BH,4 
      
      ADD BL,BH;十位和个位相加构成一个二位数,即操作者输入的数据
                               
   B: MOV DX,OFFSET MSG2
      MOV AH,09H
      INT 21H 
          
      MOV AH,01H
      INT 21H  
      SUB AL,30H  ;转为原来的数   
      MOV CH,AL     
      
      MOV AH,01H
      INT 21H  
      SUB AL,30H  ;转为原来的数   
      MOV CL,AL  
      
      SHL CH,4       
      ADD CL,CH;用户输入的B存在CL中
      MOV AL,CL;将用户输入的B送回AL,以方便后续的BCD码调整
      AND AH,00H
      AND BH,00H;清空AH和BH
      ADD AL,BL;A和B相加  
      
      DAA;组合BCD码加法调整指令
      ADC AH,00H  
      
      MOV BH,AH
      MOV BL,AL  
      MOV CL,AL;备份十位和个位在CL 
      
      
      
      
                 
               
      
  
  DISPLAY:MOV DX,OFFSET MSG3
          MOV AH,09H
          INT 21H
      
      ADD BH,30H  ;输出百位数
      MOV DL,BH  ;将带显示字符的ASCLL码放入DL中
      MOV AH,02H
      INT 21H            
      
      AND BL,0F0H  ;输出十位位数  
      SHR BL,4
      ADD BL,30H
      MOV DL,BL  ;将带显示字符的ASCLL码放入DL中
      MOV AH,02H
      INT 21H     
      
      AND CL,0FH  ;输出个位位数  
      ADD CL,30H
      MOV DL,CL  ;将带显示字符的ASCLL码放入DL中
      MOV AH,02H
      INT 21H   

                 ;退出DOS系统
      MOV AH,4CH
      INT 21H 

      ;RET
 ;ERROR:LEA DX,MSG4
      ;MOV AH,09H
      ;INT 21H      
      
      
      
      
      
        RET
MAIN ENDP;MAIN过程结束
CODE ENDS ;代码段结束
END START ;整个源代码结束
    

最后

以上就是还单身泥猴桃为你收集整理的[微机原理与接口控制】利用DOS调用实现简单的加法(2)的全部内容,希望文章能够帮你解决[微机原理与接口控制】利用DOS调用实现简单的加法(2)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部