汇编编程非法索引模式

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