我正在尝试用abc
字符串的反向填充空字符串rev
,但它在第 20 行出现错误。 这是错误的参数,或者可能是未定义的变量。
.model small
.data
abc db "i eat an apple a day$"
rev db ?
.code
main proc
mov ax,@data
mov ds,ax
;mov cx,size
mov bx,offset abc
;add bx,size
dec bx
;add bx,cx
mov dx,offset abc
copy:
mov al,byte ptr[bx]
;Error over here:(20) wrong parameters: MOV byte ptr[dx],al
;(20) probably it's an undefined var: byte ptr[dx]
mov byte ptr[dx],al
dec bx
inc dx
loop copy
mov byte ptr[dx],'$'
mov dx,offset rev
mov ah,9
int 21h
mov ah,4ch
int 21h
main endp
end main
我正在尝试用 abc 字符串的反向填充一个空字符串 rev,但它在第 20 行给出错误,这是错误的参数,或者它可能是一个未定义的变量。
您可以将 SI 和 DI 寄存器与阵列一起使用,而不是 BX 和 DX。这正是他们的目的。8086中的寄存器
这是您的代码的工作修改版本:
.model small
.data
abc db "i eat an apple a day$"
lenAbc db $-abc ; size of abc array
rev db 0
.code
main proc
mov ax,@data
mov ds,ax
mov di, 0
dec lenAbc
mov cx, word ptr lenAbc ; size of array ( excluding '$' )
dec lenAbc
mov si, word ptr lenAbc ; index of last element in an array into SI
copy:
mov al, abc [si]
mov rev [di],al ; populate rev with abc starting from last element
dec si
inc di
loop copy
mov rev [di],'$'
mov dx,offset rev
mov ah,9
int 21h
mov ah,4ch
int 21h
main endp
end main
在 emu8086 中测试