当前位置: 代码迷 >> 汇编语言 >> 十进制数(含两位小数)转换成十六进制数,该怎么处理
  详细解决方案

十进制数(含两位小数)转换成十六进制数,该怎么处理

热度:879   发布时间:2013-02-26 00:00:00.0
十进制数(含两位小数)转换成十六进制数
STACK SEGMENT STACK 'STACK'
DW 100H DUP(?)
TOP LABEL WORD
STACK ENDS
DATA SEGMENT
BUFF DB 100
DB ?
DB 100 DUP(?)
BUFF1 DW 100 
DW ?  
DW 100 DUP(?)
STRING1 DB 0AH,0DH,'PLEASE INPUT DECIMAL DATA:$'
STRING2 DB 0AH,0DH,'PRESS ANY BUTTON TO CONTINUE;PRESS ESC TO SORT','$'
STRING3 DB 0AH,0DH,'THE ORIGNIAL DATAS IS:$'
STRING4 DB 0AH,0DH,'THE SORTED DATAS IS:$'

DATA ENDS
  
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
  MOV AX,DATA
  MOV DS,AX
  MOV ES,AX
  MOV AX,STACK
  MOV SS,AX
  LEA SP,TOP
  LEA DI,BUFF1
  ADD DI,4
  MOV CX,0
L1: INC CX
  LEA DX,STRING1
  MOV AH,09H
  INT 21H
  MOV AH,0AH
  LEA DX,BUFF
  INT 21H
  LEA SI,[BUFF+1]
  CALL TRANS10TO16
  CALL DISPCR
  CALL DISPAX
  CALL DISPCR
  INC DI
  INC DI
  MOV [DI],AX
  LEA DX,STRING2
  MOV AH,09H
  INT 21H
  MOV AH,01H
  INT 21H
  CMP AL,27
  JZ SORT
  JMP L1
  MOV AH,4CH
  MOV AL,0
  INT 21H
DISPAX PROC NEAR
  XCHG AL,AH
  CALL DISPAL
  XCHG AH,AL
  CALL DISPAL
  RET
DISPAX ENDP 
DISPAL PROC NEAR
  PUSH AX
  PUSH CX
  PUSH DX
  PUSH AX
  MOV CL,4
  SHR AL,CL
  CALL CHANG
  MOV AH,02H
  MOV DL,AL
  INT 21H
  POP AX
  AND AL,0FH
  CALL CHANG
  MOV AH,02H
  MOV DL,AL
  INT 21H
  POP DX
  POP CX
  POP AX
  RET
DISPAL ENDP
CHANG PROC NEAR
  CMP AL,10
  JNGE CHANG1
  ADD AL,7
CHANG1:
  ADD AL,30H
  RET
CHANG ENDP
DISPCR PROC NEAR
  PUSH AX
  PUSH DX
  MOV AH,02H
  MOV DL,0AH
  INT 21H
  MOV AH,02H
  MOV DL,0DH
  INT 21H
  POP DX
  POP AX
DISPCR ENDP
TRANS10TO16 PROC NEAR
  PUSH CX
  PUSH DX
  PUSH SI
  XOR AX,AX
  XOR CX,CX
  MOV CL,[SI]
  INC SI
  MOV AL,[SI]
  INC SI  
  SUB AL,30H
  DEC CX
  JCXZ TRANSF2
  MOV BX,10
TRANSF1:
  MUL BX
  JC TRANSF_ERR
  MOV DL,[SI]
  INC SI
  SUB DL,30H
  ADD AL,DL
  ADC AH,0
  JC TRANSF_ERR
  LOOP TRANSF1
  MOV BX,0
TRANSF2:
  JMP TRANSF_OK
TRANSF_ERR:
  MOV BX,-1
TRANSF_OK:
  POP SI
  POP DX
  POP CX
  RET
TRANS10TO16 ENDP
SORT:PUSH CX
  CALL DISPCR
  LEA SI,BUFF1
  ADD SI,6
  LEA DX,STRING3
  MOV AH,09H
  INT 21H
L2:
  MOV AH,02H
  MOV DL,20H
  INT 21H
  MOV AX,[SI]
  CALL DISPAX
  INC SI
  INC SI
  DEC CX
  JA L2
  CALL DISPCR
  POP CX
  MOV BX,CX
  DEC CX
  XOR SI,SI
  LEA SI,BUFF1
  ADD SI,6
  MOV DX,CX
  SHL DX,1
  ADD SI,DX
  相关解决方案