⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 BCD.txt

📁 单字节十六进制整数转换成单字节BCD码整数 入口条件:待转换的单字节十六进制整数在累加器A中。 出口信息:转换后的BCD码整数(十位和个位)仍在累加器A中
💻 TXT
字号:
(16)  标号:HBCD  功能:单字节十六进制整数转换成单字节BCD码整数

入口条件:待转换的单字节十六进制整数在累加器A中。
出口信息:转换后的BCD码整数(十位和个位)仍在累加器A中,百位在R3中。
影响资源:PSW、A、B、R3    堆栈需求:  2字节

HBCD: MOV B,#100 ;分离出百位,存放在R3中
DIV AB
MOV R3,A
MOV A,#10 ;余数继续分离十位和个位
XCH A,B
DIV AB
SWAP A
ORL A,B ;将十位和个位拼装成BCD码
RET




说明:   
  流程:   
  Decibin模块:   
  把输入的十进制数转换为二进制数。   
  Binihex模块:   
  把二进制数转换为十六进制数。   
  Crlf   模块:   
  清屏回车,换行   函数。   
  代码:   
            DATAREA     SEGMENT   
              STRING     DB   "EXIT   THE   PROGRAM(INPUT   CHARACTOR   SHOULD   BE   Y/N)?",13,10,'$'   
            STRING1     DB                 "PLEASE   INPUT   THE   DECIMAL   ",13,10,'$'   
            DATAREA     ENDS   
                  CODE     SEGMENT   
                              ASSUME         CS:CODE,DS:DATAREA   
                  MAIN     PROC             FAR   
              START:   
                              PUSH             DS   
                              SUB               AX,AX   
                              PUSH             AX   
                              MOV               AX,DATAREA   
    
                              MOV               DS,AX   
    
    
            REPEAT:     CALL             DECIBIN   
                              CALL             CRLF   
                              CALL             BINIHEX   
                              CALL             CRLF   
                              LEA               DX,STRING   
                              MOV               AH,09H   
                              INT               21H   
                              MOV               AH,01H   
                              INT               21H   
    
                              CMP               AL,'Y'   
                              JE                 EXIT1   
                              CMP               AL,'N'   
                              JE                 REPEAT   
              EXIT1:   
                              MOV               AH,4CH   
                              INT               21H   
    
    
                  MAIN     ENDP   
    
            DECIBIN     PROC             NEAR   
    
                              CALL             CRLF   
                              LEA               DX,STRING1   
                              MOV               AH,09H   
                              INT               21H   
    
                              MOV               BX,00H   
                        NEWCHARACTOR:   
                              MOV               AH,01H   
                              INT               21H   
                              SUB               AL,30H   
                              JL                 EXIT   
                              CMP               AL,39H   
                              JG                 EXIT   
                              CBW   
                              XCHG             BX,AX   
                              MOV               CX,0AH   
                              MUL               CX   
                              XCHG             AX,BX   
                              ADD               BX,AX   
                              JMP               NEWCHARACTOR   
                EXIT:   
                              RET   
            DECIBIN     ENDP   
            BINIHEX     PROC             NEAR   
                              MOV               CH,4   
            ROTATE:   
                              MOV               CL,4   
                              ROL               BX,CL   
                              MOV               AL,BL   
                              AND               AL,0FH   
                              ADD               AL,30H   
                              CMP               AL,3AH   
                              JL                 PRINTF   
                              ADD               AL,07H   
            PRINTF:   
                              MOV               DL,AL   
                              MOV               AH,02H   
                              INT               21H   
                              DEC               CH   
                              JNZ               ROTATE   
                              RET   
            BINIHEX     ENDP   
                  CRLF     PROC             NEAR   
                              MOV               DL,0DH   
                              MOV               AH,02H   
                              INT               21H   
                              MOV               DL,0AH   
                              MOV               AH,02H   
                              INT               21H   
                              RET   
                  CRLF     ENDP   
                  CODE     ENDS   
                              END               START   
    
    
    
    
    
    
  
Top

2 楼tiancai1(ok)回复于 2005-01-23 14:11:23 得分 0 画了个流程图但无法上传
Top

3 楼pdy11(庞七,我什么时候才能当程序员啊)回复于 2005-01-23 14:42:10 得分 0 谢谢搂上的   我想要的是16进制转10进制的算法   给个算法   或者代码都可以谢谢   不用显示   只要能转成10进制   转成bcd码的也可以
Top

4 楼yuanqiongbo2002(玉斑指)回复于 2005-01-23 17:21:23 得分 0 多大的18进制数??
Top

5 楼tiancai1(ok)回复于 2005-01-23 19:14:00 得分 0 我看错,我以为十进制转十六进制,那知正好相反。我写了一个和上面差不多。   
  不知对否,你看看吧,把十六进制转成bcd码放在寄存器bx中.   
    
    
    
                      DATAREA     SEGMENT   
              STRING     DB                 "EXIT   THE   PROGRAM(INPUT   CHARACTOR   SHOULD   BE   Y/N)?",13,10,'$'   
            STRING1     DB                 "PLEASE   INPUT   THE   HEX(0~F)   ",13,10,'$'   
            DATAREA     ENDS   
                  CODE     SEGMENT   
                              ASSUME         CS:CODE,DS:DATAREA   
                  MAIN     PROC             FAR   
              START:   
                              PUSH             DS   
                              SUB               AX,AX   
                              PUSH             AX   
                              MOV               AX,DATAREA   
    
                              MOV               DS,AX   
    
    
            REPEAT:     CALL             HEXINTOBIC   
                              CALL             CRLF   
    
                              LEA               DX,STRING   
                              MOV               AH,09H   
                              INT               21H   
                              MOV               AH,01H   
                              INT               21H   
    
                              CMP               AL,'Y'   
                              JE                 EXIT1   
                              CMP               AL,'N'   
                              JE                 REPEAT   
              EXIT1:   
                              MOV               AH,4CH   
                              INT               21H   
    
    
                  MAIN     ENDP   
    
      HEXINTOBIC     PROC             NEAR                 ;十六进制转化为二进制;存放在BX寄存器中;   
    
                              CALL             CRLF   
                              LEA               DX,STRING1   
                              MOV               AH,09H   
                              INT               21H   
    
                              MOV               BX,00H   
                        NEWCHARACTOR:   
                              MOV               AH,01H   
                              INT               21H   
                              SUB               AL,30H   
                              JL                 EXIT   
    
                              CMP               AL,09H   
                              JG                 NEXT   
    
                  HAO:     CBW   
                              XCHG             BX,AX   
                              MOV               CX,10H   
                              MUL               CX   
                              XCHG             AX,BX   
                              ADD               BX,AX   
                              JMP               NEWCHARACTOR   
    
                NEXT:   
                              CMP               AL,16H   
                              JG                 EXIT   
                              SUB               AL,07H   
                              JMP               HAO   
                EXIT:   
                              RET   
      HEXINTOBIC     ENDP   
    
    
                  CRLF     PROC             NEAR   
    
    
                              MOV               DL,0AH   
                              MOV               AH,02H   
                              INT               21H   
    
                              MOV               DL,0DH   
                              MOV               AH,02H   
                              INT               21H   
                              MOV               DL,0AH   
                              MOV               AH,02H   
                              INT               21H   
                              RET   
                  CRLF     ENDP   
                  CODE     ENDS   
                              END               START   
    




说明:
流程:
Decibin模块:
把输入的十进制数转换为二进制数。
Binihex模块:
把二进制数转换为十六进制数。
Crlf 模块:
清屏回车,换行 函数。
代码:
DATAREA SEGMENT
STRING DB "EXIT THE PROGRAM(INPUT CHARACTOR SHOULD BE Y/N)?",13,10,'$'
STRING1 DB "PLEASE INPUT THE DECIMAL ",13,10,'$'
DATAREA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATAREA
MAIN PROC FAR
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATAREA

MOV DS,AX


REPEAT: CALL DECIBIN
CALL CRLF
CALL BINIHEX
CALL CRLF
LEA DX,STRING
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H

CMP AL,'Y'
JE EXIT1
CMP AL,'N'
JE REPEAT
EXIT1:
MOV AH,4CH
INT 21H


MAIN ENDP

DECIBIN PROC NEAR

CALL CRLF
LEA DX,STRING1
MOV AH,09H
INT 21H

MOV BX,00H
NEWCHARACTOR:
MOV AH,01H
INT 21H
SUB AL,30H
JL EXIT
CMP AL,39H
JG EXIT
CBW
XCHG BX,AX
MOV CX,0AH
MUL CX
XCHG AX,BX
ADD BX,AX
JMP NEWCHARACTOR
EXIT:
RET
DECIBIN ENDP
BINIHEX PROC NEAR
MOV CH,4
ROTATE:
MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL PRINTF
ADD AL,07H
PRINTF:
MOV DL,AL
MOV AH,02H
INT 21H
DEC CH
JNZ ROTATE
RET
BINIHEX ENDP
CRLF PROC NEAR
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
RET
CRLF ENDP
CODE ENDS
END START








⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -