数字 0 - 9 转换成对应的格雷码
2016-01-25 11:52
741 查看
数字 0 - 9 对应的格雷码为:18H, 31H, 05H, 06H, 09H, 0AH, 0CH, 11H, 12H, 14H。
要求用汇编语言编程序,将 0 - 9 数字转换成格雷码。
提问者:亻夕 | 悬赏分:25 | 2011-10-25 16:14
;程序编写如下:
;==============================================
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] ;变换成ASCII码
MOV AH, 2 ;显示高四位
INT 21H
;------------------------------
POP AX
MOV AL, AH
MOV AH, 0
MOV BX, OFFSET ASC
ADD BX, AX
MOV DL, [BX] ;变换成ASCII码
MOV AH, 2 ;显示低四位
INT 21H
;------------------------------
MOV DL, 'H'
MOV AH, 2 ;显示'H'
INT 21H
;------------------------------
EXIT:
MOV AH, 4CH
INT 21H
;----------------------------------------------
CODE ENDS
END START
;==============================================
后记:
简单的实验一下本程序,即可知能够满足题目要求。
但是提问者,却选择了一个完全不对路的答案,呵呵,大家可以到原题网址去鉴赏一下,“最佳”是什么 !
;----------------------------------------------
原题网址:http://zhidao.baidu.com/question/333986396.html
;----------------------------------------------
要求用汇编语言编程序,将 0 - 9 数字转换成格雷码。
提问者:亻夕 | 悬赏分:25 | 2011-10-25 16:14
;程序编写如下:
;==============================================
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] ;变换成ASCII码
MOV AH, 2 ;显示高四位
INT 21H
;------------------------------
POP AX
MOV AL, AH
MOV AH, 0
MOV BX, OFFSET ASC
ADD BX, AX
MOV DL, [BX] ;变换成ASCII码
MOV AH, 2 ;显示低四位
INT 21H
;------------------------------
MOV DL, 'H'
MOV AH, 2 ;显示'H'
INT 21H
;------------------------------
EXIT:
MOV AH, 4CH
INT 21H
;----------------------------------------------
CODE ENDS
END START
;==============================================
后记:
简单的实验一下本程序,即可知能够满足题目要求。
但是提问者,却选择了一个完全不对路的答案,呵呵,大家可以到原题网址去鉴赏一下,“最佳”是什么 !
;----------------------------------------------
原题网址:http://zhidao.baidu.com/question/333986396.html
;----------------------------------------------
相关文章推荐
- 从键盘输入N个十进制数,求它们的和
- 汇编能实现小数的四舍五入么?
- AngularJS中的Directive自定义一个表格
- 跨境和农村电商成热点
- 移码和补码
- 比较有符号数的大小
- 从键盘输入不多于四位的16进制数,以十六位二进制数形式输出
- 从键盘输入不多于四位的十进制数,以十六位二进制数形式输出
- WebService 写对外接口
- 数据分析与挖掘
- Asp.Net 启用全局IE兼容模式
- 用 AT89C52 使 LED 闪亮的程序
- 最简短且高效的中断处理程序
- linux下清除svn账号和密码
- 最简短且高效的脉冲输出程序
- 最简短且高效的排序程序
- 51单片机串口的发送与接收
- 买了一个无线鼠标
- DAC0832
- 数字排序