二进制转换成其他进制



;约定单元法
;子程序将BUF中的16位无符号二进制转换为P进制显示输出

STACK  SEGMENT  STACK
       DW  128 DUP(0)
STACK  ENDS
DATA   SEGMENT
A      DW  1234H,4352H,3A62H,6390H
N      DW  ($-A)/2
BUF    DW  ?
STR    DW  15 DUP(?)
P      DW  ?
J      DW  ?
DATA   ENDS
CODE   SEGMENT
       ASSUME  CS:CODE, DS:DATA, SS:STACK
START: MOV  AX,DATA
       MOV  DS,AX
       MOV  AX,STACK
       MOV  SS,AX
       MOV  CX,N
       LEA  DI,A
L:     MOV  AX,[DI]
       MOV  BUF,AX
       MOV  P,8
       MOV  J,'Q'
       CALL BCP
       MOV  P,10
       MOV  J,'H'
       CALL BCP
       ADD  DI,2
       LOOP L
       MOV  AH,4CH
       INT  21H

;入口:BUF缓冲区中存放待转换的二进制,P中存放待转换制基数
;J中存放数制的后缀,STR是存放转换数字的缓冲区
;出口:STR缓冲区中存放转换的结果

BCP   PROC
      PUSH  AX
      PUSH  BX
      PUSH  CX
      PUSH  DX
      PUSH  SI
      MOV   AX,BUF
      LEA   SI,STR
      MOV   BX,P
      MOV   CX,0
L1:   MOV   DX,0
      DIV   BX
      PUSH  DX
      INC   CX
      OR    AX,AX
      JNZ   L1
L2:   POP   AX
      CMP   AL,10
      JB    L3
      ADD   AL,7H
L3:   ADD   AL,30H
      MOV   [SI],AL
      INC   SI
      LOOP  L2
      MOV   AL,J
      MOV   [SI],AL
      MOV   [SI+1], BYTE PTR 0DH
      MOV   [SI+2], BYTE PTR 0AH
      MOV   [SI+3], BYTE PTR '$'
      LEA   DX,STR
      MOV   AH,9
      INT   21H
      POP   SI
      POP   DX
      POP   CX
      POP   BX
      POP   AX
      RET
BCP   ENDP
CODE  ENDS
      END   START       

转载于:https://www.cnblogs.com/newzpflying/archive/2005/11/13/275525.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值