当前位置: 代码迷 >> 汇编语言 >> 请教这个汇编程序哪出错了,运行不正确
  详细解决方案

请教这个汇编程序哪出错了,运行不正确

热度:546   发布时间:2013-02-26 00:00:00.0
请问这个汇编程序哪出错了,运行不正确
功能是: 数组X, x>0,y=1;x=0,y=0;x<0,y=-1;输入Y

DATA SEGMENT
X DB 5,-4,0,3,100,-51
COUNT EQU $-OFFSET X
Y DW ?
DATA ENDS
CODE SEGMENT
ASSUME DS: DATA, CS: CODE
START:
MOV AX, DATA
MOV DS, AX
MOV CX, COUNT
MOV DI, 0FFFH

NEXT: INC DI
CMP X[DI], 0
JZ ZERO
JNS PLUS
MOV BX, 0FFFFH
JMP SAVE
ZERO: MOV BX,0
JMP SAVE
PLUS: MOV BX,1
JMP SAVE
SAVE: MOV Y, BX
MOV AH, 02H
MOV DX,Y
INT 21H
LOOP NEXT
CODE ENDS
END START



------解决方案--------------------------------------------------------
应该是MOV DI,FFFFH吧
------解决方案--------------------------------------------------------
把JNS改成JA试试 LOOP NEXT后加几句
mov ah,0
int 16h
mov ah,4ch
int 21h
------解决方案--------------------------------------------------------
直接让DI等于0吧
------解决方案--------------------------------------------------------
DATA SEGMENT
X DB 5,-4,0,3,100,-51
COUNT EQU $-OFFSET X
Y DW ?
DATA ENDS
CODE SEGMENT
ASSUME DS: DATA, CS: CODE
START:
MOV AX, DATA
MOV DS, AX
MOV CX, COUNT
MOV DI, 0

NEXT: 
CMP X[di], 0
Jg a
jl b
MOV BX, 30h
JMP SAVE
a: MOV BX,31h
JMP SAVE
b: MOV BX,2d31h
JMP SAVE
SAVE: MOV dl,bh
MOV AH, 02H

INT 21H
mov dl,bl
mov ah,2
int 21h
mov dl,' '
mov ah,2
int 21h
inc di
LOOP NEXT 

mov ax,4c00h
int 21h
CODE ENDS
END START
这个应该可以吧