;Name:十进制(-32768~32767)转换16进制汇编程序-;
;Desccription: 输入一个十进制,程序转为该数的 -;
; 十六进制数从屏幕输出 ;
;Author:8 ;
;Date: 2011-11-13;
;Name:十进制(-32768~32767)转换16进制汇编程序-;
;Desccription: 输入一个十进制,程序转为该数的 -;
; 十六进制数从屏幕输出 ;
;Author:8 ;
;Date: 2011-11-13;
DATA SEGMENT
BUF DW 7
DW
DW 8 DUP(0)
ORG 10H
DAT1 DW 12 DUP(0)
ORG 20H
FIRST DW
ORG 30H
SECONDDB
ORG 40H
THIRDDB 10 DUP()
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H
LEA BX,BUF
LEA DI,DAT1
J
;ASC码转换BCM,若为负数推迟一位转码
;
mov al,[BX+2]
CMP al,'-'
JNE SP1
INC BX
MOV AL,[BX]; 负数 判断实际输入位数,将DI 指针指向相应位置
MOV CL,6
SUB CL,AL
MOV CH,0
LP3:
INC DI
INC DI
LOOP LP3; 结束
JMP NEXT
SP1:
MOV CL,5
SUB CL,AL
MOV CH,0
LP2:
INC DI
INC DI
LOOP LP2; 结束
NEXT:
MOV AX,[BX+2];ASC 转 BC加
SUB AX,30H
MOV [BX+2],AX
MOV AX,[BX+3]
SUB AX,30H
MOV [BX+3],AX
MOV AX,[BX+4]
SUB AX,30H
MOV [BX+4],AX
MOV AX,[BX+5]
SUB AX,30H
MOV [BX+5],AX
MOV AX,[BX+6]
SUB AX,30H
MOV [BX+6],AX
;每位分别存入10h,最后一位为符号值DW定义
J
MOV CX,[BX+1]
LP1:
MOV AL,[BX+2]; 将数据存入 10H
MOV [DI],AL
INC BX
INC DI
INC DI
LOOP LP1
;MOV AL,[BX+3]
;MOV [DI+2],AL
;MOV AL,[BX+4]
;MOV [DI+4],AL
;MOV AL,[BX+5]
;MOV [DI+6],AL
;MOV AL,[BX+6]
;MOV [DI+8],AL
LEA BX,BUF
LEA DI,DAT1
MOV AL,[BX+2]
; 分别计算各个位的真实值存入
20H DM义 BP
J
LEA BP,FIRST
LEA BX,SECOND
LEA DI,DAT1
MOV AX,[DI] ;万位
MOV CX,10000
MUL C
进制转16进制汇编程序 来自淘豆网m.daumloan.com转载请标明出处.