+ -
当前位置:首页 → 问答吧 → 一个关于十六进制转二进制的程序,求助

一个关于十六进制转二进制的程序,求助

时间:2011-05-23

来源:互联网

帮帮忙排错啊。。

;enter 4 hexidecimal number, and than print the corresponding binary number.

STA SEGMENT STACK
  DB 100H DUP(?)
TOP LABEL WORD
STA ENDS

DATA SEGMENT
ARRAY DB 100H DUP(?)
DATA ENDS

CODE SEGMENT
MAIN PROC FAR
  ASSUME CS:CODE,SS:STA,DS:DATA
START:
  MOV AX,STA ;初始化
  MOV SS,AX
  LEA SP,TOP
  MOV AX,DATA
  MOV DS,AX
  XOR SI,SI
  XOR AH,AH

  MOV CX,4
 L1: MOV AH,01H ;输入,暂存在数组ARRAY中。
  INT 21H
  MOV ARRAY[SI],AL
  INC SI
  LOOP L1

  MOV CL,4
  XOR SI,SI
 L2: MOV AL,ARRAY[SI] ;二重循环转换二进制。
  SUB AX,30H
  MOV BX,4
  ROL AL,1
  ROL AL,1
  ROL AL,1
  ROL AL,1
 L3: XOR DL,DL
  RCL AL,1  
  ADC DL,30H
  MOV AH,02H
  INT 21H
  DEC BX
  CMP BX,0  
  JNZ L3  
  LOOP L2

MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
  END START

作者: engrossment   发布时间: 2011-05-23

程序还没有考虑输入是字母的情况。
这个程序编译通过,但是输出几乎都是0(16个),输入8跟9都是输出1000。

作者: engrossment   发布时间: 2011-05-23