汇编编程非法索引模式
Assembly Programming Illegal indexing mode
我想知道为什么这个程序会报错。
Turbo 汇编程序版本 3.0 版权所有 (c) 1988、1991 Borland International
汇编文件:sample.asm
错误 sample.asm(16) 非法索引模式
错误信息:1
警告信息:none
传球次数:1
剩余内存:470k
title test.program
cstack segment para stack 'stack'
dw 200h
cstack ends
cdata segment para 'data'
msg1 db 'Sample progr! $'
cdata ends
ccode segment para 'code'
assume cs: ccode, ds: cdata ,ss: cstack
main:
mov cl,00
stri:
mov ah,02h
mov dl,[msg1 +cl] ;< this line give me an error of illegal indexing mode
int 21h
add cl,02
cmp dl,12
jbe stri
mov ah,4ch
int 21h
ccode ends
end main
如果你想使用一个寄存器来循环遍历 msg1 的字符,那么使用一个索引寄存器,如 SI、DI 或 BX。
当你add cl,2
你将无法正确显示字符串!
与12相比,不包括感叹号字符。
main:
mov si,00
stri:
mov ah,02h
mov dl,[msg1 + si] ;< this line give me an error of illegal indexing mode
int 21h
add si,1
cmp si,13
jbe stri
我想知道为什么这个程序会报错。
Turbo 汇编程序版本 3.0 版权所有 (c) 1988、1991 Borland International
汇编文件:sample.asm
错误 sample.asm(16) 非法索引模式
错误信息:1
警告信息:none
传球次数:1
剩余内存:470k
title test.program
cstack segment para stack 'stack'
dw 200h
cstack ends
cdata segment para 'data'
msg1 db 'Sample progr! $'
cdata ends
ccode segment para 'code'
assume cs: ccode, ds: cdata ,ss: cstack
main:
mov cl,00
stri:
mov ah,02h
mov dl,[msg1 +cl] ;< this line give me an error of illegal indexing mode
int 21h
add cl,02
cmp dl,12
jbe stri
mov ah,4ch
int 21h
ccode ends
end main
如果你想使用一个寄存器来循环遍历 msg1 的字符,那么使用一个索引寄存器,如 SI、DI 或 BX。
当你add cl,2
你将无法正确显示字符串!
与12相比,不包括感叹号字符。
main:
mov si,00
stri:
mov ah,02h
mov dl,[msg1 + si] ;< this line give me an error of illegal indexing mode
int 21h
add si,1
cmp si,13
jbe stri