| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1104 人关注过本帖
标题:从键盘输入十进制数转换成为十六进制数并显示
只看楼主 加入收藏
屁洞
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-10-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
从键盘输入十进制数转换成为十六进制数并显示
下面是我的代码,可是运行结果不对,麻烦各位高手指点~~
补充:具体描述一下程序中堆栈的过程,我不太清楚我的堆栈是否成功了~~谢谢
data segment
s0 db 0dh,0ah,"$"
s1 db "Please input a dec num: $"
s2 db "The hex num is: $"
n equ 10
buf db n+1
count db 0
string db n+1 dup('$')
data ends

stack segment stack
db 100 dup(?)
stack ends

code segment
assume cs:code,ds:data,ss:stack

start:
mov ax, data
mov ds, ax

mov ah, 09h
mov dx, offset s1
int 21h
mov ah, 0ah
lea dx, buf
int 21h
mov ah, 09h
mov dx, offset s0
int 21h
mov ah, 09h
mov dx, offset s2
int 21h

lea si, string
mov ax, 10000
push ax
mov ax, 1000
push ax
mov ax, 100
push ax
mov ax, 10
push ax
mov ax, 1
push ax

mov bx, 0
mov cx, 0
mov dx, 0
mov bh, count
L:
mov bl, [si+count-1]
and bl, 0fh
pop ax
mul bl
mov bl, 8
left1:
sal dx, 1
dec bl
cmp bl, 0
jnz left1
add dx, ax
mov cx, dx
dec bh
cmp bh, 0
jnz L

mov dx, cx
mov cx, 0
mov bx, 0
mov cl, 4
tohex:
mov bl, 0
mov al, 4
left2:
shl dx, 1
rcl bl, 1
dec al
jnz left2
push dx
cmp bl, 09h
jbe asc1

asc2:
sub bl, 9
or bl, 40h
mov ah, 02h
mov dl, bl
int 21h
pop dx
loop tohex
jmp end1

asc1:
or bl, 30h
mov ah, 02h
mov dx, 0
mov dl, bl
int 21h
pop dx
loop tohex
jmp end1

end1:
mov ah, 4ch
int 21h

code ends
end start

搜索更多相关主题的帖子: 十六进制 十进制 键盘 输入 
2010-10-23 01:01
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:20 
data segment
s0 db 0dh,0ah,"$"
s1 db "Please input a dec num: $"
s2 db "The hex num is: $"
n equ 5
buf db n+1
count db 0
string db n+1 dup('$')
data ends

stack segment stack
db 100 dup(?)
stack ends

code segment
assume cs:code,ds:data,ss:stack

start:
mov ax, data
mov ds, ax

mov ah, 09h
mov dx, offset s1
int 21h
mov ah, 0ah
lea dx, buf
int 21h
mov ah, 09h
mov dx, offset s0
int 21h
mov ah, 09h
mov dx, offset s2
int 21h

lea si, string
mov ax, 10000
push ax
mov ax, 1000
push ax
mov ax, 100
push ax
mov ax, 10
push ax
mov ax, 1
push ax

mov cl, count
xor ch,ch
mov dx, 0
add si,cx
L:
mov bl, [si-1]
and bx, 0fh
pop ax
push dx
mul bx
pop dx
add dx, ax
dec si            
loop L


mov cx, 4            ;dx包含上面计算结果,由十进制字符串转成的16进制数,作为下面循环的参数之一
mov bx, 0


tohex:
    push cx
    mov cl,4
    rol dx,cl
    push dx
    mov ax,dx
    and al,0fh
    cmp al,0ah
    jb asc
    add al,7
asc:
    add al,30h
    mov dl,al
    mov ah,2h
    int 21h
    pop dx
    pop cx
    loop tohex
    jmp end1

end1:
mov ah, 4ch
int 21h

code ends
end start


[ 本帖最后由 xiaomarn 于 2010-10-23 17:54 编辑 ]
2010-10-23 16:42
屁洞
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-10-6
收藏
得分:0 
我已经调试成功了~~还是谢谢你O(∩_∩)O

love Thailand forever
2010-10-23 19:18
快速回复:从键盘输入十进制数转换成为十六进制数并显示
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024108 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved