汇编代码中[BX]的含义及BX自增访问字符串的原理咨询
汇编中[BX]的含义与字符串访问逻辑解释
先贴出你提供的代码:
data segment mystr db "Hello World!" ends code segment start: mov ax, data mov ds, ax lea bx,mystr mov cx,50 L1: mov dl,[BX] inc BX cmp dl,'!' je L2 mov ah,02 int 21h loop L1 L2: mov ax, 4c00h int 21h ends end start
[BX]的含义
在x86汇编里,[BX]是寄存器间接寻址的写法,意思是读取BX寄存器里存的内存地址所指向的字节数据。
你用lea bx, mystr把字符串mystr的起始内存地址装进了BX,所以第一次执行mov dl,[BX]时,dl里拿到的就是mystr第一个字符'H'的ASCII值。
为什么自增BX能访问字符串的不同部分
字符串在内存里是连续排布的:"Hello World!"里的每个字符各自占1个字节,地址从mystr的起始位置开始,往后逐个加1。比如mystr对应'H',mystr+1对应'e',mystr+2对应'l',以此类推。
inc BX会把BX里存的地址加1,这样[BX]就会指向内存里的下一个字节,也就是字符串的下一个字符。循环执行这个操作,就能依次取出字符串里的每个字符了。
内容的提问来源于stack exchange,提问作者Miss Mulan
相关产品推荐
相关产品推荐

