汇编输入一个10进制转化为16进制并存储在段寄存器ds中

本篇博客介绍了一个简单的程序,用于从键盘输入一个10进制数值,并将其存储在一个16位的变量中。程序通过逐位读取ASCII码形式的数字,将其转换成数值并累加的方式实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

;输入一个10进制  input decimal,value [0-65535] 2的16次方就是 dw 一个字
;


data segment
inputV dw 0
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax


mov bx,10   ;作为乘10
xor cx,cx      ;将cx清空



nextValue:

mov ah,1
int 21h       ;读取输入的第一个数以ASCII码读取


cmp al,0dh ;检测是否读到回车 读到回车就结束
je inputEnd ;如果等于 judge equal 就跳转到结束输入



push ax
mov ax,cx ;将存储的cx的值给ax
mul bx      ;乘法ax = ax*bx
mov cx,ax ;将结果存放在cx中
pop ax

sub al,30h ;al中存放16进制数
xor ah,ah  ;将ah清零
add cx,ax  ;将之前没加的值加上
jmp nextValue
inputEnd:


mov inputV,cx ;将结果存放在inputV也就是ds段当中

mov al,cl
mov dl,al
mov ah,2
int 21h


mov ax,4c00h
int 21h         ;exit(0) ;结束
code ends
end start

原理

一位一位的处理

;1234
;31 32 33 34

;1*10 + 2)*10+2

下图是测试转换100 结果为 64


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值