汇编 进制转换

DATA SEGMENT
MD DW ?
C10 DW 10
AIM DW ?
TIMES DW ?
LETTER DB '0123456789ABCDEF'
BUFFER DB 80,?,80 DUP(?)
BUFFER1 DB 80,?,80 DUP(?)
MESS  DB 0DH,0AH,'PLEASE INPUT A INTEGER ',0DH,0AH,'$'
MESS1 DB 0DH,0AH,'A DECIMAL DISPLAY OF THE INPUT NUMBER ',0DH,0AH,'$'
MESS2 DB 0DH,0AH,'PLEASE INPUT THE HEX YU WANT TO TRANSFORM TO ',0DH,0AH,'$'
MESS3 DB 0DH,0AH,'THE WANTED HEX IS ',0DH,0AH,'$'
MESS4 DB 0DH,0AH,'CONVERTED NUMBER ',0DH,0AH,'$'
MESS5 DB 0DH,0AH,'WRONG PLACE',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
      MOV DS,AX

      LEA DX,MESS
      MOV AH,09H
      INT 21H

      LEA DX,BUFFER
      MOV AH,0AH
      INT 21H

      MOV BL,BUFFER+1
      MOV BH,0
      ADD BL,2
      MOV BUFFER[BX],'$'

      LEA DX,MESS1
      MOV AH,09H
      INT 21H

      MOV AH,09H
      LEA DX,BUFFER
      ADD DX,2
      INT 21H

      LEA DX,MESS2
      MOV AH,09H
      INT 21H

      LEA DX,BUFFER1
      MOV AH,0AH
      INT 21H

      MOV BH,0
      MOV BL,BUFFER1[1]
      ADD BL,2
      MOV BUFFER1[BX],'$'

      LEA DX,MESS3
      MOV AH,09H
      INT 21H

      MOV AH,09H
      LEA DX,BUFFER1[2]
      INT 21H

      MOV CL,BUFFER1[1]   ;GET THE NUMBER OF THE WANTED HEX    1
      MOV CH,0
      LEA SI,BUFFER1[2]
      MOV AX,0
  ONE:MUL C10
      MOV BL,[SI]
      SUB BL,'0'       
      MOV BH,0
      ADD AX,BX
      INC SI
      LOOP ONE              ;END THE COURSE OF GETTING HEX 
      MOV  MD,AX            ;MOVE HEX TO AX

      MOV CL,BUFFER[1]       ;GET THE NUMBER OF  AIM NUMBER
      MOV CH,0
      LEA SI,BUFFER[2]
      MOV AX,0
  TWO:MUL C10
      MOV BL,[SI]   
      SUB BL,'0'                                                  
      MOV BH,0
      ADD AX,BX
      INC SI          
      LOOP TWO
      MOV AIM,AX              ;MOV IT TO AIM     
 
      MOV TIMES,0
      CMP MD,2
      JZ T2                
      MOV AX,AIM
   T1:MOV DX,0    ;这句话一定不能少!!!如果是0除以进制单位,按照我们的想法余数0应该放在DX里,但实际上DX的数值不变,会出现想不到的错误
      DIV MD
      PUSH DX
      INC TIMES
      CMP AX,0
      JZ END1
      JMP T1

   T2:MOV CX,10H
      MOV AX,AIM
   T3:DIV MD
      PUSH DX
      INC TIMES
      LOOP T3
      
 END1:LEA DX,MESS4
      MOV AH,09H
      INT 21H

      LEA BX,LETTER
      MOV CX,TIMES
 OUT0:POP AX
      MOV AH,0
      XLAT
      MOV DL,AL
      MOV AH,02H
      INT 21H
      LOOP OUT0
      MOV AX,4C00H
      INT 21H
CODE ENDS
END START


坑点就一个,就是取余之前将余数存放的地方改成0,防止0除之后出现错误,这个地方我找了五个多小时没找出来,都是泪啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值