您的位置:首页 > 编程语言

80x86汇编语言编程:二进制输入、十进制输出

2016-01-25 12:01 906 查看
编程实现键盘输入16位二进制数,转换成等值十进制数显示。

程序执行后,要求操作员键入16位二进制数,然后程序立即进行转换,显示出等值的十进制数。
对于非法键入不受理,不回显,也不显示错误信息。

显示格式示范如下:

000010011101011B = 1259D

做而论道编写的程序如下:

;==================================
DATA  SEGMENT
    BUF1   DB  10, 13, 'PLEASE  INPUT  BIN : ', 13, 10, '$'
    BUF2   DW  0
DATA  ENDS
;----------------------------------
CODE  SEGMENT
    ASSUME  CS:CODE, DS:DATA, ES:DATA
BEG:
    MOV   AX, DATA
    MOV   DS, AX
    MOV   AH, 09H
    MOV   DX, OFFSET  BUF1
    INT   21H
    MOV   BX, 0
    MOV   CX, 16
_IN_:
    MOV   AH, 07H     ;输入字符
    INT   21H
    CMP   AL, 13
    JE    _OUT_
    CMP   AL, '0'
    JB    _IN_
    CMP   AL, '1'
    JA    _IN_
    ADD   BX, BX
    CMP   AL, '1'
    JNE   NO_0
    INC   BX
NO_0:
    MOV   AH, 02H
    MOV   DL, AL
    INT   21H
    LOOP  _IN_
;--------------------------    
_OUT_:
    MOV   BUF2, BX    ;保存

    MOV   AH, 02H
    MOV   DL, 13
    INT   21H
    MOV   DL, 10
    INT   21H
    MOV   AX, BUF2
    MOV   BX, 2
    CALL  OUT_AX
    MOV   AH, 02H
    MOV   DL, 'B'
    INT   21H
    MOV   DL, '='
    INT   21H
    MOV   AX, BUF2
    MOV   BX, 10
    CALL  OUT_AX
    MOV   AH, 02H
    MOV   DL, 'D'
    INT   21H
EXIT:
    MOV  AH, 4CH
    INT  21H
;------------------------------
OUT_AX   PROC       ;
    OR   AX, AX
    JZ   _0_
LOOP_P:
    XOR  DX, DX
    DIV  BX
    MOV  CX, AX     ;
    OR   CX, DX
    JZ   _E_        ;
    PUSH DX         ;
    CALL LOOP_P     
    POP  DX         ;
    CMP  DL, 10
    JB   A30
    ADD  DL, 7
A30:
    ADD  DL, '0'    ;
    JMP  _1_
_0_:MOV  DL, '0'    ;
_1_:CALL PUTC
_E_:RET
OUT_AX   ENDP
;------------------------------
PUTC  PROC  
    MOV  AH, 2
    INT  21H
    RET
PUTC  ENDP
;------------------------------
CODE  ENDS
    END  BEG
;==================================

经过编译、连接、执行后的结果,完全符合题目要求。

题目链接:http://zhidao.baidu.com/question/544543775.html

提问者评价:THX !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: