用汇编语言把十进制数转成二进制,再怎么转成格雷码
转成二进制的程序是
data segment
pr db "Input a number:$"
pr1 db 0ah,0dh,"Binary out:$"
buf db 10
nu db 0
string db 10 dup("$")
x dw ?
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,offset pr
mov ah,09h
int 21h
mov ah,0ah
lea dx,buf
int 21h
mov cl,nu
xor ch,ch
lea si,string
mov bp,10
xor bx,bx
lp: mov al,[si]
and al,0fh
cbw
xchg ax,bx
mul bp
xchg ax,bx
add bx,ax
inc si
loop lp
mov x,bx
lea dx,pr1
mov ah,09h
int 21h
mov cx,10h
lp1: xor dl,dl
rol bx,1
rcl dl,1
add dl,30h
mov ah,02h
int 21h
loop lp1
mov ah,4ch
int 21h
code ends
end start
然后怎么转成格雷码??
格雷码是二进制的每一位和它前面一位xor,比如二进制(0)10011,格雷码是11010。。。。。。
有人给我说
{假定ax中已有数值。
只需
mov bx,ax
shr bx,1
xor ax,bx
此时ax中即为该数的格雷码。}
但这个二进制是一位一位的输出的,怎么办??