注:原博客账号密码丢失,故将本科期间的笔记搬运至此
例如将35H转换为二进制数据应得到23H、即十进制的35
DATAS SEGMENT
;此处输入数据段代码
buf db 35h,64h,89h
res db ?
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
;宏 显示一个字符
dispchar macro char
mov ah,2
mov dl,char
int 21h
endm
;宏定义完成
;宏 显示字符串
dispmsg macro message
mov ah,9
lea dx,message
int 21h
endm
;宏定义完成
;宏 显示十六进制数的四位
disphex macro hexdata
local disphex1
push ax
push bx
push cx
push dx
mov bx,hexdata
mov cx,0404h
disphex1: rol bx,cl
mov al,bl
and al,0fh
call htoasc
dispchar al
dec ch
jnz disphex1
pop dx
pop cx
pop bx
pop ax
endm
;宏定义完成
mov cx,lengthof buf
lea si, buf
lea di, res
;disphex word ptr [si]
again:
mov al,byte ptr [si]
call bcdto2
;disphex ax
mov byte ptr [di],al
inc si
inc di
loop again
disphex word ptr res
MOV AH,4CH
INT 21H
;BCD转二进制
bcdto2 proc
push cx
mov ah,0h
mov bl,10h
div bl
mov dl,ah
mov bl,10
mul bl
add al,dl
pop cx
ret
bcdto2 endp
;子程序十六进制转ASCII
HTOASC proc
push bx
mov bx,offset ASCII
and al,0fh
xlat ASCII
pop bx
ret
ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
db 41h,42h,43h,44h,45h,46h
HTOASC endp
CODES ENDS
END START
---------------------
作者:D???
来源:CSDN
原文:https://blog.csdn.net/qq_31424383/article/details/53180398
版权声明:本文为博主原创文章,转载请附上博文链接!