你是指在屏幕上输出吧?
输出前做一个判断,如果是负值,则先输出一个'-'号,然后把该数取绝对值,再进行输出。
代码如下:
;用10进制把AX寄存器中的数值输出到屏幕上
print proc near
mov bx,10
test ax,8000H ;判断最高位
jnz p0 ;正数
push ax ;负数,输出'-'
mov ax,0e2dH ;'-' ascii 2dh
int 10h
pop ax
neg ax
p0:
mov dx,0
xor cx,cx
Q0:
xor dx,dx
div bx
xor dx,0e30h
push dx
inc cx
cmp ax,0
jnz Q0
Q1:
pop ax
int 10h
loop Q1
ret
print endp
ASSUME CS:CODE, DS: DATA
DATA SEGMENT
X DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
;----------------------- ;准备
MOV X, -79 ;-128~-1
MOV DL, '-'
MOV AH, 02H
INT 21H
MOV AX, X
NEG AX ;负数变成正数。下面按照正数,来显示
MOV BL, 10
MOV CX, 0
L:
MOV AH, 0
DIV BL
MOV DL, AH
ADD DL, 30H
PUSH DX
INC CX
CMP AL, 0
JNZ L
MOV AH, 02H
M:
POP DX
INT 21H
LOOP M
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
想输出X=-79