二进制转换成十进制显示输出


调用子程序,将BUF中的二进制数转换成十进制显示输出


STACK  SEGMENT  STACK
       DB   128 DUP(0)
STACK  ENDS
DATA   SEGMENT
BUF    DW   0025H,0389H
N      =   ($-BUF)/2
STR    DB   9 DUP(' ')
CHE    DW  10000,1000,100,10,1
DATA   ENDS
CODE   SEGMENT
       ASSUME  CS:CODE, DS:DATA, SS:STACK
START: MOV  AX,DATA
       MOV  DS,AX
       MOV  AX,STACK
       MOV  SS,AX
       LEA  SI,BUF
       MOV  CX,N
L:     MOV  AX,[SI]
       LEA  DI,STR
       CALL CBD
       ADD  SI,2
       LOOP L
       MOV  AH,4CH
       INT  21H

;入口:AX中存放待转换的二进制数
;出口:DI寄存器存放字符串的首地址
CBD    PROC
       PUSH  AX
       PUSH  BX
       PUSH  CX
       PUSH  DX
       PUSH  SI
       PUSH  DI
       PUSH  DI
       LEA   SI,CHE
       OR    AX,AX
       JNS   PLUS
       MOV   BYTE PTR [DI],'-'
       INC   DI
       NEG   AX
PLUS:  MOV   CX,5
L1:    MOV   BX,[SI]
       MOV   DX,0
       DIV   BX
       ADD   AL,30H
       MOV   [DI],AL
       INC   DI
       ADD   SI,2
       MOV   AX,DX
       OR    AX,AX
       JZ    L2
       LOOP  L1
L2:    MOV   BYTE PTR[DI],13
       INC   DI
       MOV   BYTE PTR[DI],10
       INC   DI
       MOV   BYTE PTR[DI],'$'
       POP   DX
       MOV   AH,9
       INT   21H
       POP   DI
       POP   SI
       POP   DX
       POP   CX
       POP   BX
       POP   AX
       RET
CBD    ENDP

CODE   ENDS
       END   START

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值