80x86汇编语言编程:按下任意键,以二进制和16进制输出该键所对应的 ASCII 码

来源:互联网 发布:svg3dtagcloud.js 编辑:程序博客网 时间:2024/06/05 17:15

题目要求:按下键盘任意键,分别以二进制和16进制输出该键所对应的 ASCII 码。

比如按下 A 屏幕这样显示:
A --> 01000001B 41H

按下 B,显示:
B --> 01000010B 42H

按回车键结束程序。
题目网址:http://zhidao.baidu.com/question/440654501.html

以前,做而论道曾经编写过以十进制显示键入字符 ASCII 码的程序,链接如下:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/eb25a23cb6d88ff73c6d972f.html

针对本题,只是改改输出部分就行了,程序如下。
;=================================
DATA  SEGMENT 
    MSG0  DB  13, 10, 'This  Program  Can  Change  CHAR  to  BIN  and  HEX.$' 
    MSG1  DB  13, 10, 'Please input a char (Enter will finish program) : ', '$' 
DATA  ENDS 
;---------------------------------
CODE  SEGMENT 
    ASSUME  CS:CODE, DS:DATA 
START: 
    MOV   AX, DATA 
    MOV   DS, AX 
    MOV   DX, OFFSET  MSG0
    MOV   AH, 9        ;9号功能调用,显示提示.
    INT   21H          ;显示.
;---------------------------------
LOP:
    MOV   DX, OFFSET  MSG1
    MOV   AH, 9        ;9号功能调用,显示提示.
    INT   21H          ;显示.
    MOV   AH, 1        ;1号功能调用,键入、显示.
    INT   21H          ;
    CMP   AL, 13
    JZ    EXIT         ;回车就结束.
    PUSH  AX
    MOV   AH, 2 
    MOV   DL, 32       ;空格.
    INT   21H
    MOV   DL, '-'
    INT   21H
    MOV   DL, '-'
    INT   21H
    MOV   DL, '>'
    INT   21H
    MOV   DL, ' '
    INT   21H
;------------------------
    POP   AX
    CALL  CHANUM       ;调用显示程序.
    JMP   LOP
;---------------------------------
EXIT: 
    MOV   AH, 4CH 
    INT   21H 
;---------------------------------
CHANUM:                ;显示AL中的ASCII码.
    PUSH  AX
;------------------------
    MOV   CX, 8        ;显示8位二进制数.
    MOV   AH, 2
B1:
    MOV   DL, '0'
    CMP   AL, 80H
    JB    B2
    INC   DL
B2:
    PUSH  AX
    INT   21H
    POP   AX
    ADD   AL, AL
    LOOP  B1
;------------------------
    MOV   AH, 2
    MOV   DL, 'B'      ;显示B,
    INT   21H
    MOV   DL, ','
    INT   21H
    MOV   DL, ' '
    INT   21H
;------------------------
    POP   AX           ;下面显示两位16进制数.
    MOV   AH, 0
    MOV   BL, 16
    DIV   BL

    PUSH  AX
    MOV   DL, AL
    ADD   DL, '0'
    CMP   DL, 3AH
    JB    H1
    ADD   DL, 7
H1:
    MOV   AH, 2
    INT   21H

    POP   AX
    MOV   DL, AH
    ADD   DL, '0'
    CMP   DL, 3AH
    JB    H2
    ADD   DL, 7
H2:
    MOV   AH, 2
    INT   21H
;------------------------
    MOV   AH, 2
    MOV   DL, 'H'      ;显示H.
    INT   21H
    MOV   DL, '.'
    INT   21H
    RET
;---------------------------------
CODE  ENDS 
    END  START
;=================================

程序执行时,显示如下:

C:\MASM>bin_hex

This  Program  Can  Change  CHAR  to  BIN  and  HEX.
Please input a char (Enter will finish program) : 3 --> 00110011B, 33H.
Please input a char (Enter will finish program) : 4 --> 00110100B, 34H.
Please input a char (Enter will finish program) : 6 --> 00110110B, 36H.
Please input a char (Enter will finish program) : a --> 01100001B, 61H.
Please input a char (Enter will finish program) : A --> 01000001B, 41H.
Please input a char (Enter will finish program) : z --> 01111010B, 7AH.
Please input a char (Enter will finish program) : b --> 01100010B, 62H.
Please input a char (Enter will finish program) : ! --> 00100001B, 21H.
Please input a char (Enter will finish program) : @ --> 01000000B, 40H.
Please input a char (Enter will finish program) : $ --> 00100100B, 24H.
Please input a char (Enter will finish program) :
C:\MASM>

;=================================
原题网址:http://zhidao.baidu.com/question/440654501.html
提问者对回答的评价:谢谢大神
;=================================

0 0