汇编程序实验源程序.pdf
;A3-1.asm
;将ASCII码十进制数转换为二进制数
STACK1SEGMENTSTAC
DW256DUP(?)
STACK1ENDS
DDATASEGMENT
MES1DBTheasciicodeofdecimalcodeare:$
BUFDB30H,30H,30H,31H,32H
DB10HDUP(0)
DDATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DDATA
START:MOVAX,DDATA
MOVDS,AX
MOVSI,OFFSETBUF
MOVBX,000AH
MOVCX,0004H
MOVAH,00H
MOVAL,[SI]
SUBAL,30H
A1:IMULBX
ADDAL,[SI+01]
SUBAL,30H
INCSI
LOOPA1
MOV[SI],AX
MOVDX,OFFSETMES1
MOVAH,09H
INT21H
INCSI;显示高字节
CALLSHOW
DECSI;显示低字节
CALLSHOW
MOVAX,4C00H
INT21H
SHOWPROCNEAR
MOVAL,DS:[SI]
ANDAL,0F0H;取高4位
SHRAL,4
CMPAL,0AH;是否是A以上的数
JBC2
ADDAL,07H
C2:ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVAL,DS:[SI]
推荐精选
ANDAL,0FH;取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
RET
ENDP
CODEENDS
ENDSTART
;A3-2.asm
;将十进制数的ASC码转换为BCD码
STACK1SEGMENTSTACK
DW256DUP(?)
STACK1ENDS
DDATASEGMENT
MES1DBTheBCDcodeofdecimalare:$
BUFDB31H,32H,33H,34H,35H
DB10HDUP(0)
DDATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DDATA
START:MOVAX,DDATA
MOVDS,AX
MOVCX,0005H
MOVDI,OFFSETBUF
A1:MOVBL,0FFH
MOVAL,[DI]
CMPAL,3AH;比较AL中的数是否是0~9的A