数字0-9字符对应的格雷码为:18H,31H,05H,06H,09H,0AH,0CH,11H,12H,14H。用汇编语言编程序将0-9数字转换成

求步骤,求完整解析!高人们速度点、、万分感谢!!!
转换成格雷码、、

data segment
gc db 18H,31H,05H,06H,09H,0AH,0CH,11H,12H,14H;定义格雷码表
result db ?,?,"$";存放转换后的格雷码
data ends
code segment
assume ds:data,cs:code
start:mov ax,data
mov ds,ax
lea bx,gc
next:mov ah,1;从键盘输入一个字符
int 21h;
cmp al,30h;判断输入的字符是否是0~9之间,若不是,则重新输入
jb next
cmp al,39h
ja next
sub al,30h;若是,则将其ASCII码转换成数字0~9
xlat;查表得到所输入数字的格雷码
mov ah,al
mov cl,4
shr ah,cl
add ah,30h
mov result+1,ah;存入result单元中
and al,0fh
add al,30h
mov result,al
lea dx,result;将转换后的格雷码在屏幕上输出
mov ah,9
int 21h
mov ax,4c00h;程序结束
int 21h
code ends
end start
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-08
你需要确认以下几个环境的编码:
1 源文件编码(即要存入mysql的数据来源);
2 perl执行端(即执行perl的环境)的字符编码;(听你的意思,似乎2和1相同)
3 mysql数据库的默认编码。
保持三码合一应该就不会有问题,如果三码不合一,一般在perl程序里面进行转码,或者设置连接编码方式,似乎一般是这样:
在连接数据库后,写入数据前,设定连接参数
$dbh->do("SETNAMES 'GBK'"); #GBK是你的数据库的编码类型本回答被提问者采纳
第2个回答  2011-10-25
数字0-9字符,在那里?

转换后,怎么办? 需要显示吗?追问

数字0-9字符对应的格雷码为:18H,31H,05H,06H,09H,0AH,0CH,11H,12H,14H
需要显示啊

追答

;----------------------------------------------
DATA SEGMENT ;数据段.
GR DB 18H, 31H, 05H, 06H, 09H
DB 0AH, 0CH, 11H, 12H, 14H
ASC DB '0123456789ABCDEF'
MSG1 DB 13, 10, 'Please input a num (0~9) : $'
MSG2 DB 13, 10, 'The GR code is : $'
MSG3 DB 13, 10, 'Oh ! my god ! $'
DATA ENDS
;----------------------------------------------
CODE SEGMENT ;代码段.
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
;------------------------------
MOV DX, OFFSET MSG1
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H ;显示.

MOV AH, 1 ;1号功能调用,键入、显示.
INT 21H ;
CMP AL, '0'
JB ERR
CMP AL, '9'
JBE L1 ;小于等于9转移.
ERR:
MOV DX, OFFSET MSG3
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H ;显示.

JMP EXIT
;------------------------------
L1:
PUSH AX

MOV DX, OFFSET MSG2
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H ;显示.

POP AX

AND AL, 0FH
MOV AH, 0
MOV BX, OFFSET GR
ADD BX, AX
MOV AL, [BX]
;------------------------------
MOV AH, 0
MOV BL, 16 ;
DIV BL
PUSH AX
MOV AH, 0
MOV BX, OFFSET ASC
ADD BX, AX
MOV DL, [BX]
MOV AH, 2
INT 21H
;------------------------------
POP AX
MOV AL, AH
MOV AH, 0
MOV BX, OFFSET ASC
ADD BX, AX
MOV DL, [BX]
MOV AH, 2
INT 21H
;------------------------------
MOV DL, 'H'
MOV AH, 2
INT 21H
;------------------------------
EXIT:
MOV AH, 4CH
INT 21H
;------------------------------
CODE ENDS
END START

相似回答