回 帖 发 新 帖 刷新版面

主题:怎么多了一个右移指令就说是无效指令

这个是实现数组相加的
stack segment stack
      db 256 dup(?)
stack ends
      data segment
      ary1 db 10 dup(3)
      sum1 dw ?
      ary2 db 8 dup(5)
      sum2 dw ?
      ary3 db 6 dup(8)
      sum3 dw ?
data ends
code segment
     assume cs:code,ds:data,ss:stack
sum  proc near
     push ax
     push bx
     push cx
     push bp
     mov bp,sp
     pushf
     mov cx,[bp+12]
     mov bx,[bp+10]
     mov ax,0
again:add al,[bx]
     inc bx
     adc ah,0
loop again
     mov [bx],ax
     mov cx,16
     mov bx,ax
pri: test bx,0001h
     jz t1
     mov dl,'1'
     mov ah,2
     int 21h
     jmp t2
 t1: mov dl,'0'
     mov ah,2
     int 21h
 t2: sar bx,1就是这里,加了这里就不行了
loop pri
     mov dl,0dh
     mov ah,2
     int 21h
     mov dl,0ah
     mov ah,2
     int 21h
     popf
     pop bp
     pop cx
     pop bx
     pop ax
     ret 4
sum  endp
main proc far
     mov ax,data
     mov ds,ax
     push ds
     sub ax,ax
     push ax
     mov ax,size ary1
     push ax
     mov ax,offset ary1
     push ax
     call sum
     mov ax,size ary2
     push ax
     mov ax,offset ary2
     push ax
     call sum
     mov ax,size ary3
     push ax
     mov ax,offset ary3
     push ax
     call sum
     ret 
main endp
code ends
end main

code ends
end  start

回复列表 (共2个回复)

沙发

那位高手能说一下,是什么问题了?

板凳

晕,我还没写出过这么长的程序呢。呵呵。

我来回复

您尚未登录,请登录后再回复。点此登录或注册