主题:怎么多了一个右移指令就说是无效指令
这个是实现数组相加的
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
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