我正在尝试使用rev
字符串的反向填充空字符串abc
,但它在第20行给出了错误。这是错误的参数,或者可能是未定义的var。
.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行给出了错误。这是错误的参数或可能是未定义的var。
答案 0 :(得分:0)
您可以在阵列中使用SI和DI寄存器,而不是BX和DX。这正是他们的目的。 Registers in 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中测试