;输入一个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
;31 32 33 34
;
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