21,458
社区成员
发帖
与我相关
我的任务
分享
data segment
zifu dw 4567h ;设置1个字,按ascii码重新输入
data ends
assume cs:code,ds:data
code segment
begin:
mov ax,data
mov ds,ax
mov si,0
mov dx,[si] ;将data段的内容送给dx
call htascs ;调用子程序,开始讲2进制进行转换为ascii码重新写入
mov ax,4c00h
int 21h
htascs proc near
mov cx,4
htascs1:
rol dx,1
rol dx,1
rol dx,1
rol dx,1 ;循环右移4次,将最高位的4位转移到最低位的4位
mov al,dl ;低字部分给al
call htoasc ;调用子程序开始进行转换
mov [si],al ;将转化好的ascii码重新存入ds段
inc si ;si自增一,以便下一个字符存入
loop htascs1
ret
htascs endp
htoasc proc
and al,0fh ;将al的高字部分屏蔽为0,将低位4位开始转换
add al,30h ;+30h表示转化为ascii码
cmp al,39h ;与ascii码数字最大符39(数字9)比较,判断是否数字或者是字母a-f
jbe htoasc1 ;如小于39,则是数字跳出,否则加7转化为字符a-f
add al,7
htoasc1:ret ;跳到call hotasc下一句,继续执行
htoasc endp
code ends
end begin