将ASCⅡ码表示的十进制数转换为二进制数
程序员文章站
2022-07-15 09:28:46
...
.model small
.data
asc db 32h,33h,37h,39h,36h
.code
start:
mov ax,@data;数据段
mov ds,ax
mov si,offset asc;取数据首地址,存于si寄存器
mov cx,0004h;循环四次
mov bx,000ah;代表十进制10
mov ah,0;ah清零,避免影响ax的值
mov al,[si];第一个元素值加入到al,所以cx=4
sub al,30h;将ascⅡ码转换为真值
next1: mul bx;al乘以bx存于ax中
inc si;+1
mov dl,[si]
mov dh,0
sub dx,30h;dx的真值
add ax,dx;将ax与dx相加
dec cx;-1
jnz next1;dec和现在这句可以和为loop next1
mov cl,16;计数器,逻辑循环移位16次即可
mov bx,ax;将得到的十进制数存到bx中
next2:
rol bx,1;逻辑循环
mov dl,bl;取低八位
and dl,01h;确定最后一位是0还是1
add dl,30h;将dl按asc码输出
mov ah,2h;输出一个字符
int 21h
dec cl
jnz next2;这两句也可以替换为loop next2
mov ax,4c00h
int 21h
end start
运行环境为dosbox,原创不易,大家多多点赞。
上一篇: 求八位二进制数