用[bx+idata]的方式进行数组的处理
[bx+idata]也就是[bx+數字]
如:ds:[bx+5]
指令mov ax,[bx+200]的含義
將一個內存單元的內容送入ax,這個內存單元的長度為兩個字節,存放一個字,偏移地址為bx中的數值加上200,段地址在ds中。
數學表示:(ax)=((ds)*16+(bx)+200)
該指令也可以寫成如下格式(常用):
mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200
題目:編寫代碼,將datasg定義中的第一個字符轉化為大寫,第二個字符轉化為小寫:
方法1:按照原來的方法,用[BX]的方式定位字符串中的字符
方法2:有了【bx+idata】的方式可以變得更簡化
思路:觀察datasg段中的兩個字符串,一個起始地址為0,另一個起始地址為5.
我們可以將這兩個字符串看成兩個數組,一個從0地址開始存放,一個從5開始
那么,我們就可以用[0+bx]和[5+bx]的方式在同一個循環中定位這兩個字符串中的字符。
在這里,0和5給定了兩個字符串的起始偏移地址,bx中給出了從起始偏移地址開始的相對地址。
這兩個字符串在內存中的起始地址是不一樣的,但是,他們中的每一個字符,從起始地址開始的相對地址的變化是相同的。
比較C程序和匯編程序的相似之處:
C語言:a[i] , b[i]
匯編語言:0[bx] , 5[bx]
通過比較可以發現,[bx+idata]的方式為高級語言實現數組提供了便利機制。
總結
以上是生活随笔為你收集整理的用[bx+idata]的方式进行数组的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql整理_MySQL 日常整理
- 下一篇: input type类型_设备树下的in