| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2278 人关注过本帖
标题:[求解释]10进制输入16进制输出
取消只看楼主 加入收藏
cenriter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-4
收藏
 问题点数:0 回复次数:7 
[求解释]10进制输入16进制输出

题目:把一个65535以内的十进制数转换成十六进制形式,并送显示,如:
                                                                                                         输入       65535
                                                                                                         输出        FFFF

6楼的大哥写的都对,但我是初学者,看不大懂,有哪位能帮我解释下?拜托了~!

[此贴子已经被作者于2006-12-10 21:15:22编辑过]

搜索更多相关主题的帖子: 进制 输出 解释 输入 
2006-12-05 10:04
cenriter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-4
收藏
得分:0 
回复:(曾小)什么意思 啊?版主说清啊!是不是我太糗了...
字符串65535在输入的时候会变成 36H 35H 35H 33H 35H 。然后都减30H,变成6 5 5 3 5 ,各乘以各自的位数,比如6*10000,5*1000。最后让它们相加,变成十进制的65535,这样存进去的时候,计算机会自动转换成16进制。

对了,减30H 后的是 6H 5H 5H 3H 5H ,不是十进制。
哪位有新的办法或者能把65535变成十进制。

小弟初学,说不清楚的地方,大家见谅啊

2006-12-06 15:27
cenriter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-4
收藏
得分:0 

谢谢,这个程序可行,我还得看懂下。我那种方法不知道能不能做


2006-12-07 12:25
cenriter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-4
收藏
得分:0 
大哥,解释下,我看了半天还是晕头转向的,你的算法是什么?

mov ah,01
int 21h
是指输入的字符保存在AH内?

cmp al,0dh
jz write
这句的功能是什么?

2006-12-10 20:45
cenriter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-4
收藏
得分:0 

前面的:那不是输入AH吗?怎么又变成AL了呢?
后面的:转移倒是知道,但我不知道这段对整个程序来说有什么用处,为什么要和ODH比?

谢谢你的回答


2006-12-11 18:02
cenriter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-4
收藏
得分:0 

知道了

cmp al, 0dh
jz write ;
sub al, 30h
MOV cl, al
MOV ch, 0
MOV ax, bx
MOV bx, 0ah ;
mul bx
MOV bx, ax
add bx, cx
jmp input

write : MOV dl, 0dh
MOV ah, 02h
int 21h
MOV dl, 0ah
MOV ah, 02
int 21h

那这两段什么意思呢?为什么要存0和与0DH比较呢?


2006-12-11 18:23
cenriter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-4
收藏
得分:0 

帮我看看下面的

[此贴子已经被作者于2006-12-11 22:22:15编辑过]


2006-12-11 19:52
cenriter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-4
收藏
得分:0 

code segment
assume cs: code
org 100h
start:

MOV bx, 0

input : MOV ah, 01
int 21h
cmp al, 0dh
jz write ;
sub al, 30h
MOV cl, al
MOV ch, 0
MOV ax, bx
MOV bx, 0ah
mul bx ;乘以0AH而不是10H,一直理解错就在这里。
MOV bx, ax
add bx, cx
jmp input

write : MOV dl, 0dh
MOV ah, 02h
int 21h
MOV dl, 0ah
MOV ah, 02
int 21h ; 输出回车和换行

;例如我们输入“65535”,到这里为止BX中就是0FFFFH

MOV dh, 2
CC : MOV si, 2
BB: MOV AH, 0
MOV AL, BH ;BX中的BH给AL,那这时候AX变成了00FFH

MOV CL, 4

SHL AX, CL ;AX变成0FF0H

cmp ah, 10 ;AH=0FH
MOV BH, al ;BH=0F0H
jC disp ;AH小于,则CF=1,则跳转DISP
add ah, 7 ;这里是为了A到F的输出

disp: add ah, 30h
MOV dl, ah
MOV ah, 02
int 21h

dec si ;循环1次
mov cx, si
jcxz disp1
jmp bb
disp1 : MOV bh, bl
dec dh ; 像做BH一样处理BL

jnz cc


EXIT: MOV AH, 1
INT 21H

MOV AH, 4CH
INT 21H

code ends
end start


[此贴子已经被作者于2006-12-12 20:12:49编辑过]


2006-12-11 22:22
快速回复:[求解释]10进制输入16进制输出
数据加载中...
 
   



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

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