首页 > 解决方案 > 汇编语言命令行

问题描述

我在解决这个汇编语言问题时遇到了困难。如果有人能解释如何做到这一点,我真的很感激。谢谢你。

说明:扩展程序 add 以启用添加 2 个十进制值,从而打印十进制值。

预期输出:

加 8 7

15

加 12 99

111

代码:

ASSUME DS:MYDATA,CS:MYCODE
MYDATA  SEGMENT     
x       DW      ?
y       DW      ?
z       DW      ?
buf     DW      ?
MYDATA  ENDS
MYCODE  SEGMENT
MAIN    PROC    
        MOV AX,SEG MYDATA
        MOV ES,AX
        CALL GCMDP  
        MOV AX,SEG MYDATA 
        MOV DS,AX
        MOV AX,X    ;  DS:[X]
        MOV BX,Y
        ADD AX,BX
        MOV z,AX
        CALL PRNINT
        MOV AH,4CH
        INT 21H
MAIN    ENDP    
GCMDP   PROC
        MOV SI, 80H
        LODSB           ; DS:[SI] --> AL  SI = SI +1 
        MOV CL,AL
        MOV CH,0
L1:     LODSB
        CMP AL,20H
        JE L1
        SUB al,'0'      ; '0' = 30H = 48
        MOV ah,0        ; ensures AX = AL  =  00AL
        MOV ES:[x],AX
L2:     LODSB
        CMP AL,20H
        JE L2
        SUB al,'0'      ; '0' = 30H = 48
        MOV ah,0        ; ensures AX = AL  =  00AL
        MOV ES:[y],AX       
        RET
GCMDP   ENDP
; prints the value of the int in the standard output
PRNINT  PROC
        ADD AX,30H
        MOV DL,AL
        MOV AH,2
        INT 21H
        RET
PRNINT  ENDP
MYCODE  ENDS
        END     MAIN

标签: assemblydosx86-16

解决方案


推荐阅读