注册 登录
编程论坛 汇编论坛

[求助]字数据转十六进制并显示

无心 发布于 2006-05-25 12:20, 1370 次点击

将首址为buffer中的字数据用十六进制显示出来,并判断是数字还是字母

data segment
buffer db 1,2,3,'A','B'
data ends
code segment
assume cs:code,ds:data
main proc far
push ds
sub ax,ax
push ax

mov ax,data
mov ds,ax
mov bx,0
mov cx,len
loop1:
mov al,buffer[bx]
add al,30h
mov ah,02h
mov dl,al
int 21h
mov dl,20h
int 21h
dec cx
inc bx
loop loop1
mov ah,4ch
int 21h
ret
main endp
code ends
end main


上面这点是自己写的,但有些不会写,特来请高手指教下.先谢谢了!

7 回复
#2
ADALE2006-05-25 14:19
以下是引用无心在2006-5-25 12:20:00的发言:

将首址为buffer中的字数据用十六进制显示出来,并判断是数字还是字母

data segment
buffer db 1,2,3,'A','B'
data ends
code segment
assume cs:code,ds:data
main proc far
push ds
sub ax,ax
push ax

mov ax,data
mov ds,ax
mov bx,0
mov cx,len ;这是什么
loop1:
mov al,buffer[bx]
add al,30h
mov ah,02h
mov dl,al
int 21h
mov dl,20h ;这个有什么用
int 21h
dec cx ;LOOP本身会自动减1
inc bx
loop loop1
mov ah,4ch
int 21h
ret
main endp
code ends
end main


上面这点是自己写的,但有些不会写,特来请高手指教下.先谢谢了!

你的程序还没有写判断字母 如果是字母就加37H 就行了

#3
无心2006-05-25 14:31
如何判断字母是大写的还是小写的呢,这条指令不会.
还有现在数字输出的是十字制,如何转换为十六制的呢?
#4
ADALE2006-05-25 14:50
转成十六进制 除以16就行了 注意一下哪个放哪里就行了

CMP BUFFER[BX],ASC码值比较就行了
#5
无心2006-05-25 15:16
谢谢!
我试试先
#6
share2172006-05-25 16:09
#7
达达2006-05-29 21:01
以下是引用ADALE在2006-5-25 14:50:00的发言:
转成十六进制 除以16就行了 注意一下哪个放哪里就行了

CMP BUFFER[BX],ASC码值比较就行了

什么意思 能详细点么?

#8
abd665432006-05-29 22:47
以下是引用无心在2006-5-25 12:20:00的发言:

将首址为buffer中的字数据用十六进制显示出来,并判断是数字还是字母

data segment
buffer db 1,2,3,'A','B'
data ends
code segment
assume cs:code,ds:data
main proc far
start: push ds;程序开始
sub ax,ax
push ax

mov ax,data
mov ds,ax
mov bx,0
mov cx,len
loop1:
mov al,buffer[bx]
add al,30h
mov ah,02h
mov dl,al
int 21h
mov dl,20h
int 21h
dec cx
inc bx
loop loop1
mov ah,4ch
int 21h
ret
main endp
code ends
end start


上面这点是自己写的,但有些不会写,特来请高手指教下.先谢谢了!

呵呵,改个小地方先。

1