📄 进制转换10-2-10.asm
字号:
;******************************************;
; copyright@vivian_chan ;
; chen_xi 2006 ;
; ;
;******************************************;
data segment
bin dw 0 ;存放10->2后的二进制数
string db 10 dup(?) ;用来以字符串的形式存放用户输入的数字
result db '00000$' ;存放2->10后待输出的结果
data ends
stack segment para stack ;定义堆栈段
db 100 dup(?)
stack ends
code segment
assume ds:data,ss:stack,cs:code
start:mov ax,data ;数据段初始化
mov ds,ax
inchange:
mov ah,01h ;01号功能调用,键盘输入字符,al为入口参数
int 21h
cmp al,0dh ;是回车吗?
jz finish ;循环出口:输入回车时跳出
and al,0fh ;将输入数据(ASCII码)高四位清零
push ax ;ax压栈,供后面使用
mov ax,bin
mov bx,10
mul bx ;将bin中取出的数乘10
mov bin,ax ;乘10后放回bin
pop ax ;将之前输入并屏蔽过高四位的数据从堆栈中弹出
and ax,0ffh
add bin,ax ;将弹出的值与bin中数值相加,并放入bin
jmp inchange ;循环inchange
finish:
mov ax,bin ;在div指令的默认被除数寄存器里放入bin中的二进制数
mov di,offset result[4] ;将2->10的结果从result字符串的最后一个单元放起,以便按序输出
mov bx,10 ;在bx中放入除10取余的除数
outchange:
mov dx,0
div bx ;除10
add dl,30h ;将得到的余数转换成ASCII码
mov [di],dl ;将此ASCII码放入result中
dec di ;指针减1
cmp ax,0 ;余数为0?
jz output ;若为0,转到output
jmp outchange ;若为0,循环
output:
mov dx,offset result ;取result字符串首地址
mov ah,09h ;09号功能调用,输出字符串
int 21h
mov ah,4ch ;返回DOS
int 21h
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -