十进制数(含两位小数)转换成十六进制数
时间:2010-12-08
来源:互联网
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
LP1:
PUSH CX
PUSH SI
LP2:
MOV AL,[SI]
CMP AL,[SI-2]
JAE NOXCHG
XCHG AL,[SI-2]
MOV [SI],AL
NOXCHG:
DEC SI
DEC SI
LOOP LP2
POP SI
POP CX
LOOP LP1
MOV CX,BX
CALL DISPCR
LEA SI,BUFF1
ADD SI,6
XOR DX,DX
LEA DX,STRING4
MOV AH,09H
INT 21H
L4:
MOV AH,02H
MOV DL,20H
INT 21H
MOV AX,[SI]
CALL DISPAX
INC SI
INC SI
DEC CX
JA L4
MOV AH,4CH
INT 21H
CODE ENDS
END START
这个没有小数转换怎么加进去啊
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
LP1:
PUSH CX
PUSH SI
LP2:
MOV AL,[SI]
CMP AL,[SI-2]
JAE NOXCHG
XCHG AL,[SI-2]
MOV [SI],AL
NOXCHG:
DEC SI
DEC SI
LOOP LP2
POP SI
POP CX
LOOP LP1
MOV CX,BX
CALL DISPCR
LEA SI,BUFF1
ADD SI,6
XOR DX,DX
LEA DX,STRING4
MOV AH,09H
INT 21H
L4:
MOV AH,02H
MOV DL,20H
INT 21H
MOV AX,[SI]
CALL DISPAX
INC SI
INC SI
DEC CX
JA L4
MOV AH,4CH
INT 21H
CODE ENDS
END START
这个没有小数转换怎么加进去啊
作者: zq527123853 发布时间: 2010-12-08
还没有学到浮点运算。。
作者: masmaster 发布时间: 2010-12-08
还用到浮点?这么难啊
作者: zq527123853 发布时间: 2010-12-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28