80x86 汇编语言:键入0~255之间的数,显示对应的二进制和十六进制数

汇编语言:从键盘输入一个0~255之间的整数,并显示出对应该数的二进制和十六进制数。


1、在屏幕提示:“please  input  a  number(0~255): ”后,输入一个0~255之间的整数。

若所输入的数不在此范围内,或输入其它字符,则屏幕提示:“input  a  invalid  number, exit!”。

2、在屏幕上显示出对应该数的二进制和十六进制数。

例如:127 = 01111111B = 7FH


2013-12-22 14:30 提问者采纳

链接:http://zhidao.baidu.com/question/1445927116927293700.html


如下即可:

;================================================

ASSUME  CS:CODE, DS:DATA

DATA   SEGMENT

    MSG1   DB  13, 10, 'Please  input  a  number(0~255): $'

    MSG2   DB  13, 10, 'Input  a  invalid  number, exit! $'

    CRLF   DB  13, 10, ' = $'

    NNNN   DB  ?

DATA   ENDS

;----------------------------------

CODE   SEGMENT


START:

    MOV   AX, DATA

    MOV   DS, AX

;-----------------------

    LEA   DX, MSG1

    MOV   AH, 9

    INT   21H

IN_CHAR:

    MOV   AH, 1

    INT   21H

    CMP   AL, 13

    JE    IN_END

    CMP   AL, '0'

    JB    IN_ERR

    CMP   AL, '9'

    JA    IN_ERR

    SUB   AL, 30H

    MOV   DL, AL


    MOV   AL, NNNN

    MOV   BL, 10

    MUL   BL

    CMP   AH, 0

    JNZ   IN_ERR

    ADD   AL, DL

    JC    IN_ERR

    MOV   NNNN, AL


    JMP   IN_CHAR

IN_END:

    LEA   DX, CRLF

    MOV   AH, 9

    INT   21H


    CALL  OUT_BIN

    LEA   DX, CRLF

    MOV   AH, 9

    INT   21H

    CALL  OUT_HEX

    JMP   EXIT

IN_ERR:

    LEA   DX, MSG2

    MOV   AH, 9

    INT   21H

EXIT:

    MOV   AH, 4CH

    INT   21H              ;返回DOS

;----------------------------------

OUT_BIN:

    MOV   AH, 2

    MOV   BL, NNNN

    MOV   CX, 8

LP1:

    MOV   DL, '0'

    ADD   BL, BL

    JNC   LP2

    INC   DL

LP2:

    INT   21H

    LOOP  LP1


    MOV   DL, 'B'

    INT   21H

    RET

;----------------------------------

OUT_HEX:

    MOV   AH, 0

    MOV   AL, NNNN

    MOV   BL, 16

    DIV   BL

    MOV   DX, AX

    MOV   AH, 2

    CMP   DL, 10

    JB    LP3

    ADD   DL, 7

LP3:

    ADD   DL, 30H

    INT   21H

    MOV   DL, DH

    CMP   DL, 10

    JB    LP4

    ADD   DL, 7

LP4:

    ADD   DL, 30H

    INT   21H


    MOV   DL, 'H'

    INT   21H

    RET

;----------------------------------

CODE   ENDS

    END  START

;================================================

提问者评价:非常感谢!!!



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值