+ -
当前位置:首页 → 问答吧 → 汇编程序求助,请问大家怎么编怎么修改呀?

汇编程序求助,请问大家怎么编怎么修改呀?

时间:2011-04-21

来源:互联网

试编制一个程序,统计DA_WORD数据区中正数、0、负数的个数。数据定义如下: 
DA_WORD DW -1 3 5 0 -5 -7 4 0 -8 
COUNT EQU $ -DA_WORD 
NUM DB 0 ;存放正数的个数 
DB 0 ;存放0的个数 
DB 0 ; 存放负数的个数


下面是我编的

LOP: MOV AX,[BX]
  CMP AX,0
  JE ZERO
  JL LESS
  INC NUM
ZERO: INC NUM+1
  JMP NEXT
LESS: INC NUM+2
NEXT: INC BX
  LOOP LOP

作者: blueshine1   发布时间: 2011-04-21

INC NUM 指令后应该是 JMP NEXT 吧,不然就会再对 0 累计了。另外,完整的代码要初始化好 ds 、bx 和 cx 等使用到的寄存器。

作者: zara   发布时间: 2011-04-21

引用 1 楼 zara 的回复:
INC NUM 指令后应该是 JMP NEXT 吧,不然就会再对 0 累计了。另外,完整的代码要初始化好 ds 、bx 和 cx 等使用到的寄存器。


但是编译出来有许多错误,不知道哪里错了,请指教……

作者: blueshine1   发布时间: 2011-04-21

有错误的话,不都提示错误所在的行号,即具体的错误缘由的吗?当然了,不能是你上面这样就去编译;首先要有完整的源程序的结构。

作者: zara   发布时间: 2011-04-21

1. LZ你还真是够聪明啊,写个核心就了事了啊,让别人给你写外围.
2. 代码
Assembly code
    .model tiny
    .code
    main proc far
start:
    xor ax,ax
    push ds
    push ax
    mov  bx,offset DA_WORD
    mov  cx,count
LOP: 
    MOV AX,cs:[BX]
    CMP AX,0
    JE ZERO
    JL LESS
    INC cs:[NUM]
    jmp short NEXT
ZERO:
    INC cs:[NUM+1]
      JMP NEXT
LESS:
    INC cs:[NUM+2]
NEXT:
    INC BX
    INC BX
      LOOP LOP
    ret
    main endp
    org 0100h
    DA_WORD DW -1,3,5,0,-5,-7,4,0,-8  
    COUNT EQU ($ - DA_WORD) / 2 
    NUM DB 0
    DB 0
    DB 0
    end start

作者: va_zaixuexi   发布时间: 2011-04-21