zoukankan      html  css  js  c++  java
  • 【汇编】输入两位10进制数,屏幕显示其二进制

     1 DATA SEGMENT 
     2 STRING DB 'pls input your number(double-digit) to display(binary system)',0DH,0AH,'$'
     3 BUF DB 3 DUP('$');缓冲区
     4 DATA ENDS
     5 CODE SEGMENT
     6      ASSUME CS:CODE,DS:DATA
     7 MAIN PROC FAR
     8      MOV AX,DATA
     9      MOV DS,AX 
    10 
    11      LEA DX,STRING;输出字符串
    12      MOV AH,09H
    13      INT 21H
    14 
    15      MOV AH,0AH;键盘输入
    16      LEA DX,BUF
    17      INT 21H
    18 
    19      MOV DL,0AH
    20      MOV AH,02H
    21      INT 21H
    22 
    23      LEA SI,BUF+2;地址最高位
    24      MOV BL,[SI]
    25      SUB BL,30H
    26      MOV AL,10
    27      MUL BL
    28      MOV BL,[SI+1]
    29      ADD AL,BL
    30      SUB AL,30H
    31      MOV BL,AL;不能对AL左移?为啥
    32      MOV CX,08H
    33 PRINT:  
    34      SHL BL,1
    35      JC   ONE
    36      JNC  ZERO
    37 
    38 ZERO:
    39      MOV DL,30H
    40      MOV AH,02H
    41      INT 21H
    42      LOOP PRINT
    43      MOV AH,4CH
    44      INT 21H
    45 ONE:
    46      MOV DL,31H
    47      MOV AH,02H
    48      INT 21H
    49      LOOP PRINT 
    50      MOV AH,4CH
    51      INT 21H
    52 MAIN ENDP
    53 CODE ENDS
    54      END MAIN

    将字符ASCII转化为16进制的数:例如‘12’——(31-30h)*10+32-30h后存入寄存器00001100。

    转换后对此数左移8次,每次检测进位C标志位,如果有进位,则显示1,否则0;

    另一种方法是,不移动此目标数,另BL=10000000,让BL右移8次,TEST(与)指令去检测每一位,为1的话显示1,否则0。下面是程序

     1 DATA SEGMENT 
     2 STRING DB 'pls input your number(double-digit) to display(binary system)',0DH,0AH,'$'
     3 BUF DB 3 DUP('$');缓冲区
     4 DATA ENDS
     5 CODE SEGMENT
     6      ASSUME CS:CODE,DS:DATA
     7 MAIN PROC FAR
     8      MOV AX,DATA
     9      MOV DS,AX 
    10 
    11      LEA DX,STRING;输出字符串
    12      MOV AH,09H
    13      INT 21H
    14 
    15      MOV AH,0AH;键盘输入
    16      LEA DX,BUF
    17      INT 21H
    18 
    19      MOV DL,0AH
    20      MOV AH,02H
    21      INT 21H
    22 
    23      LEA SI,BUF+2;地址最高位
    24      MOV BL,[SI]
    25      SUB BL,30H
    26      MOV AL,10
    27      MUL BL
    28      MOV BL,[SI+1]
    29      ADD AL,BL
    30      SUB AL,30H
    31      MOV BL,AL;不能对AL左移?为啥
    32      MOV CX,08H
    33      MOV BH,80H
    34 PRINT:  
    35      TEST BL,BH
    36      JNZ  ONE
    37      JZ  ZERO
    38 
    39 ZERO:
    40      MOV DL,30H
    41      MOV AH,02H
    42      INT 21H
    43      SHR BH,1
    44      LOOP PRINT
    45      MOV AH,4CH
    46      INT 21H
    47 ONE:
  • 相关阅读:
    C语言调用汇编函数 实现超过32位数的加法
    【Qt学习笔记】13_富文本及打印页面
    Java初级回顾
    Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴
    Java中File类如何扫描磁盘所有文件包括子目录及子目录文件
    学习笔记之循环链表
    练习 hdu 5523 Game
    学习笔记之集合ArrayList(1)和迭代器
    学习笔记之工厂方法模式
    学习笔记之基本数据类型-包装类-String之间的转换
  • 原文地址:https://www.cnblogs.com/tenderwx/p/5375779.html
Copyright © 2011-2022 走看看