全部展开
鳗鱼篮球:获得ax、dx结果后,立即添加“3231313353236313431303231363533 e 58685 e 5a EB 9313361326361 int 3”的中断命令,并在调试程序中进行编程
计算程序暂停时的ax、dx寄存器的值。
方法2 )制作显示16位二进制数的显示子程序,分别调用显示ax、dx即可。
方法3 :如果dx是32位的前16位,ax是32位的后16位,则必须创建32位的二进制数
只需显示子程序并调用该显示。
后者的实现方法如下所示。
; * * * * * * * * * * * * * * * * * *
DISPDXAXPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
推送si
PUSHDI
PUSHBP
推送
推送
PUSHF
;===============
pushcs
popds
pushcs
popes
MOVWORDPTR[Y],AX
MOVWORDPTR[Y 2],DX
; 以下,将y (十六进制)转换为十进制串并输出
MOVAX,WORDPTR[Y]
MOVDX,WORDPTR[Y 2]
MOVBX,WORDPTR[Z]
MOVCX,WORDPTR[Z 2]
MOVWORDPTRN,0
MM0:INCWORDPTRN
SUBAX,BX
SBBDX,CX
JNCMM0
DECWORDPTRN
ADDAX,BX
ADCDX,CX
MOVWORDPTR[Y],AX
MOVWORDPTR[Y 2],DX
;===============
mm1:导线I,CC
ADDDI,9
M2:
MOVAX,WORDPTR[Y]
MOVDX,WORDPTR[Y 2]
MOVBX,10000
DIVBX
PUSHAX
PUSHDX
;==============
; 以下,变换十进制低位4比特
POPDX
MOVCX,4
MOVAX,DX
M3:MOVDX,0
MOVBX,10
DIVBX
ADDDL,30H
MOV[DI],DL
DECDI
LOOPM3
;===============
; 以下是转换十进制的高万位
POPAX
MOVCX,1
M4:MOVDX,0
MOVBX,10
DIVBX
ADDDL,30H
MOV[DI],DL
DECDI
LOOPM4
;==============
MOVAX,WORDPTRN
MOVCX,5
M5:MOVDX,0
MOVBX,10
DIVBX
ADDDL,30H
MOV[DI],DL
DECDI
LOOPM5
;==============
; 输出换行返回
LEADX,LFCR
MOVAH,9
INT21H
;==============
; 输出2数之和的十进制串
引线x,抄送
MOVAH,9
INT21H
;==============
POPF
popes
popds
POPBP
POPDI
POPSI
POPDX
POPCX
POPBX
POPAX
RET
; -----------------
YDD?
CCDB10DUP ',10,13,' $ '
LFC RDB 10,13,' $ '
ZDD100000
NDW0
DISPDXAXENDP
; * * * * * * * * * * * * * * * * * *
; 将要显示的无符号数放入ax
DISPAXPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
推送si
PUSHDI
PUSHBP
推送
推送
PUSHF
;================
PUSHCS
POPDS
pushcs
popes
MOVBYTEPTRNZ,0
PUSHAX
LEASI,DIVARR
MOVCX,5
@1:
POPAX
MOVDX,0
MOVBX,[SI]
DIVBX
PUSHDX
CMPAL,0
JNE@2
CMPBYTEPTRNZ,1
JE@2
CMPCX,1
JE@2
MOVDL,20H
JMP@3
@2:
ADDAL,30H
MOVDL,AL
MOVBYTEPTRNZ,1
@3:
MOVAH,2
INT21H
INCSI
INCSI
LOOP@1
POPDX
;==============
MOVDL,32
MOVAH,2
INT21H
POPF
popes
popds
POPBP
POPDI
POPSI
POPDX
POPCX
POPBX
POPAX
RET
divarrdw10000、1000、100、10、1
NZDB0
DISPAXENDP
; * * * * * * * * * * * * * * * * *