如题 用dosbox 汇编asm程序时报错,内存溢出
完整的代码如下
DATA1 SEGMENT
Data DW 10
DW 2130, -43, 31, -321, -1234, 345, 0, 3213, 0, 5477
Positive DW 0
Negative DW 0
Zero DW 0
DATA1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA1
START:MOV AX, DATA1
MOV DS, AX
Mov AX,0 ;用AX来对正数计数
Mov BX,0 ;用BX来对负数计数
Mov DX,0 ;用DX来对零计数
MOV CX, data ;用CX来进行循环计数
JCXZ save ;考虑数组的元素个数为0的情况
LEA SI, data+2 ;用指针SI来访问整个数组
again: CMP word ptr [SI], 0
JL lower
JE equal
INC AX
JMP loop1
lower: INC BX
JMPloop1
Equal :INC DX
loop1:ADD SI, 2
LOOP again
Save :MOV Positive, AX ;把各类的统计数保存到内存单元中
MOV Negative, BX
MOV Zero, DX
MOV AH, 4CH
INT 21H
CODE ENDS
END START
解决方案,问题所在
原来的空格问题 仔细修改空格即可
修改完之后,如下
ASSUME CS:CODE, DS:DATA1
DATA1 SEGMENT
Data DW 10
DW 2130, -43, 31, -321, -1234, 345, 0, 3213, 0, 5477
Positive DW 0
Negative DW 0
Zero DW 0
DATA1 ENDS
CODE SEGMENT
START:
MOV AX, DATA1
MOV DS, AX
Mov AX,0 ;用AX来对正数计数
Mov BX,0 ;用BX来对负数计数
Mov DX,0 ;用DX来对零计数
MOV CX, data ;用CX来进行循环计数
JCXZ save ;考虑数组的元素个数为0的情况
LEA SI, data+2 ;用指针SI来访问整个数组
again:
CMP word ptr [SI], 0
JL lower
JE equal
INC AX
JMP loop1
lower:
INC BX
JMP loop1
Equal :
INC DX
loop1:
ADD SI, 2
LOOP again
Save :
MOV Positive, AX ;把各类的统计数保存到内存单元中
MOV Negative, BX
MOV Zero, DX
MOV AH, 4CH
INT 21H
CODE ENDS
END START