汇编——将屏幕输入的两个数相加

难点在于屏幕上读到的是什么?是ASCII码吗,还是真实的十进制数?

它怎么转化为我们可以相加的数?

DATA SEGMENT
    INFOR1 DB 'Please Input the First Data(<10):$'
    INFOR2 DB 0AH,0DH,'Please Input the Second Data(<10):$' ; 0A 是 '\n' 0D 是 '\r',回车换行
    INFOR3 DB 0AH,0DH,'The Result is:$'
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX          ;数据送入ds中
        
    LEA DX,INFOR1      ;输出INFOR1字符串
    MOV AH,09H         ;ah=9用来输出字符串,ds:dx=串地址
    INT 21H            ;
                                        
    MOV AH,01H         ;ah=1准备输入,AL=输入字符
    INT 21H            
    
    SUB AL,30H         ;输入的为ASCII码,所以减去48是真实数字
    MOV BL,AL
       
       
    LEA DX,INFOR2      ;输出INFOR2字符串
    MOV AH,09H         ;ah=9用来输出字符串,ds:dx=串地址
    INT 21H

    MOV AH,01H         ;ah=1准备输入,AL=输入字符
    INT 21H
    
    SUB AL,30H         ;输入的为ASCII码,所以减去48是真实数字

    XOR AH,AH          ;将AH清空
    ADD AL,BL       
    AAA                ;加法ASCII码调整指令

    PUSH AX
    LEA DX,INFOR3
    MOV AH,09H
    INT 21H

    POP AX
    PUSH AX
    MOV DL,AH
    ADD DL,30H     ;计算结束之后加上48输出。
    MOV AH,02H     ;2号系统调用,输出单个字符,在汇编中想输出数字只能单个ASCII码的输出。
    INT 21H
    POP AX
    MOV DL,AL
    ADD DL,30H  
    MOV AH,02H
    INT 21H

    MOV AH,4CH
    INT 21H
CODE ENDS
END START

 

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