⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ack.asm

📁 ACK文件
💻 ASM
字号:
DSEG SEGMENT
MSG1   DB 'Input the M:$'
MSG2   DB 'Input the N:$'
MSG3   DB 'The Result Is:$'
INBUF1 DB 32,?,32 DUP('$')
INBUF2 DB 32,?,32 DUP('$')
RESULT DB 5 DUP('?'),0DH,0AH,'$'
DSEG ENDS

CSEG SEGMENT
     ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
       MOV DS,AX
       MOV DX,OFFSET MSG1
       CALL DSPMESS
       MOV DX,OFFSET INBUF1
       MOV AH,0AH
       INT 21H
       CALL CRLF

       MOV DX,OFFSET MSG2
       CALL DSPMESS
       MOV DX,OFFSET INBUF2
       MOV AH,0AH
       INT 21H
       CALL CRLF

       MOV BX,OFFSET INBUF1+1
       CALL DTOBIN
       MOV DX,AX
       MOV BX,OFFSET INBUF2+1
       CALL DTOBIN
       CALL ACK
        MOV AX,BX
       MOV BX,OFFSET RESULT
       CALL BINTOD
       MOV DX,OFFSET MSG3
       CALL DSPMESS
       MOV DX,OFFSET RESULT
       MOV AH,09H
       INT 21H
       CALL CRLF
       MOV AH,4CH
       INT 21H



DTOBIN   PROC
         PUSH BX
         PUSH CX
         PUSH DX
         XOR AX,AX
         MOV CL,[BX]
         INC BX
         XOR CH,CH
         JCXZ DTOBIN2
DTOBIN1: MOV DX,10
         MUL DX
         MOV DL,[BX]
         INC BX
         AND DL,0FH
         XOR DH,DH
         ADD AX,DX
         LOOP DTOBIN1
DTOBIN2: POP DX
         POP CX
         POP BX
         RET
DTOBIN   ENDP

ACK   PROC
       PUSH  DX
       CMP   DX,0
       JZ    OVER
       CMP   AX,0
       JZ    UNOVER
       DEC   AX
       CALL  ACK
       MOV   AX,BX
       DEC   DX
       CALL  ACK
       POP   DX
       RET
UNOVER: DEC  DX
        MOV  AX,1
        CALL ACK
        POP  DX
        RET
OVER:   MOV  BX,AX
        INC  BX
        POP  DX
        RET
ACK  ENDP



BINTOD  PROC;把二进制数转换为十进制数
        PUSH   AX
        PUSH   CX
        PUSH   DX
        PUSH   SI
        MOV    SI,5
        MOV   CX,10
BINTOD1:XOR   DX,DX
        DIV   CX
        ADD   DL,30H
        DEC  SI
        MOV  [BX][SI],DL
        OR   SI,SI
        JNZ  BINTOD1
        POP  SI
        POP  DX
        POP  CX
        POP  AX
        RET
BINTOD  ENDP
;显示字符串子程序,入口为字符串首址=DS:DX,字符串以'$'为结束符
DSPMESS PROC
        PUSH AX
        MOV  AH,9
        INT  21H
        POP  AX
        RET
DSPMESS ENDP

;输出回车换行子程序
CRLF   PROC
       PUSH  AX
       PUSH  DX
       MOV   DL,0DH
       MOV   AH,2
       INT   21H
       MOV   DL,0AH
       MOV   AH,2
       INT   21H
       POP   DX
       POP   AX
       RET
CRLF   ENDP

CSEG   ENDS
       END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -