汇编语言指令最后怎么显示ax和dx中的内容

如题所述

方法一:在得到ax、dx结果后,紧接着加一条“int 3”中断指令,在debug中调试运行程序,
程序暂停时的ax、dx寄存器中的值即为所求。
方法二:编一个显示16位二进制数的显示子程序,然后分别调用其显示ax、dx即可。
方法三:如果dx是32位数的高16位,ax是32位数的低16位,那得编写一个32位二进制数的
显示子程序,调用其显示即可。


以下是后两者的实现方法:

;******************************************************** 
    DISPDXAX  PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              PUSH      SI
              PUSH      DI
              PUSH      BP
              push ds
              push es
              PUSHF
              ;==============
              push cs
              pop ds
              push cs
              pop es
              MOV       WORD PTR [Y],AX
              MOV       WORD PTR [Y+2],DX
              ; 以下将 Y (16进制)转为10进制串并输出
              MOV       AX,WORD PTR [Y]         
              MOV       DX,WORD PTR [Y+2]       
              MOV       BX,WORD PTR [Z]         
              MOV       CX,WORD PTR [Z+2]      
              MOV       WORD PTR N,0           
        MM0:  INC       WORD PTR N  
              SUB       AX,BX       
              SBB       DX,CX       
              JNC       MM0         
              DEC       WORD PTR N  
              ADD       AX,BX      
              ADC       DX,CX       
              MOV       WORD PTR[Y],AX         
              MOV       WORD PTR[Y+2],DX        
              ;==============
        MM1:  LEA       DI,CC
              ADD       DI,9
         M2:
              MOV       AX,WORD PTR [Y]
              MOV       DX,WORD PTR [Y+2]
              MOV       BX,10000
              DIV       BX          
              PUSH      AX
              PUSH      DX
              ; ============
              ; 以下转换10进制的低4位
              POP       DX
              MOV       CX,4
              MOV       AX,DX
         M3:  MOV       DX,0
              MOV       BX,10
              DIV       BX
              ADD       DL,30H
              MOV       [DI],DL
              DEC       DI
              LOOP      M3
              ; ===========
              ; 以下转换10进制的高万位
              POP       AX
              MOV       CX,1
         M4:  MOV       DX,0
              MOV       BX,10
              DIV       BX
              ADD       DL,30H
              MOV       [DI],DL
              DEC       DI
              LOOP      M4
              ;=============
              MOV       AX,WORD PTR N
              MOV       CX,5
         M5:  MOV       DX,0
              MOV       BX,10
              DIV       BX
              ADD       DL,30H
              MOV       [DI],DL
              DEC       DI
              LOOP      M5
              ; ============
              ; 输出换行回车
              LEA       DX,LFCR
              MOV       AH,9
              INT       21H
              ; ============
              ; 输出两数的和的10进制串
              LEA       DX,CC
              MOV       AH,9
              INT       21H
              ;=============
              POPF
              pop es
              pop ds
              POP       BP
              POP       DI
              POP       SI
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
              ;------------
           Y  DD        ?
          CC  DB        10 DUP(' '),10,13,'$'
        LFCR  DB        10,13,'$'
           Z  DD        100000
           N  DW        0
    DISPDXAX  ENDP
;***********************************************************
    ; 将要显示的无符号数置于 ax 中 
      DISPAX  PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              PUSH      DX
              PUSH      SI
              PUSH      DI
              PUSH      BP
              push ds
              push es
              PUSHF
              ;================
              PUSH      CS
              POP       DS
              push cs
              pop es
              MOV       BYTE PTR NZ,0
              PUSH      AX
              LEA       SI,DIVARR
              MOV       CX,5
         @1:
              POP       AX
              MOV       DX,0
              MOV       BX,[SI]
              DIV       BX
              PUSH      DX
              CMP       AL,0
              JNE       @2
              CMP       BYTE PTR NZ,1
              JE        @2
              CMP       CX,1
              JE        @2
              MOV       DL,20H
              JMP       @3
         @2:
              ADD       AL,30H
              MOV       DL,AL
              MOV       BYTE PTR NZ,1
         @3:
              MOV       AH,2
              INT       21H
              INC       SI
              INC       SI
              LOOP      @1
              POP       DX
              ;=============
              MOV       DL,32
              MOV       AH,2
              INT       21H
              POPF
              pop es
              pop ds
              POP       BP
              POP       DI
              POP       SI
              POP       DX
              POP       CX
              POP       BX
              POP       AX
              RET
      DIVARR  DW        10000,1000,100,10,1
          NZ  DB        0
      DISPAX  ENDP
;*******************************************************

温馨提示:答案为网友推荐,仅供参考