DOSBox 0.74 汇编 out of memery test.asm(2):out of memory

如题 用dosbox 汇编asm程序时报错,内存溢出

DOSBox 0.74 汇编 out of memery test.asm(2):out of memory_第1张图片

完整的代码如下

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 

解决方案,问题所在

原来的空格问题 仔细修改空格即可
DOSBox 0.74 汇编 out of memery test.asm(2):out of memory_第2张图片

修改完之后,如下

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 

正常通过

DOSBox 0.74 汇编 out of memery test.asm(2):out of memory_第3张图片

你可能感兴趣的:(×86汇编,反汇编,asm,masm)