日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编语言不带冒号标号的用法

發(fā)布時(shí)間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言不带冒号标号的用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

匯編語言中,有一種編程方法:直接定址表

這種方法和高級(jí)語言,C語言中的數(shù)組有類似的思想,就是將參數(shù)編排在一起,然后通過數(shù)組名的調(diào)用,得到需要的數(shù)值

匯編語言中,帶冒號(hào)的標(biāo)號(hào)在程序中可以知道代碼的位置,而不帶冒號(hào)的標(biāo)號(hào)可以在程序中找到代碼位置的同時(shí)知道所表示的參數(shù)的大小

比如說:table db 0,這里的table就是一個(gè)不帶冒號(hào)的標(biāo)號(hào),如果定位到這個(gè)標(biāo)號(hào),那么就知道這個(gè)標(biāo)號(hào)后面的數(shù)值是db型的


這里還需要強(qiáng)調(diào)一下call指令的一種用法,call word ptr 內(nèi)存單元地址

這個(gè)指令的作用可以寫為:push IP

jmp word ptr 內(nèi)存單元地址

這樣,在用直接地址的方法時(shí),就可以用call指令來定位表中存放的標(biāo)號(hào)地址,調(diào)用子函數(shù),下面的例程就是用call指令來實(shí)現(xiàn)對(duì)地址的定址方法

代碼功能:用ah來確定調(diào)用的子函數(shù)的序號(hào),第一個(gè)子函數(shù)是清屏的功能,第二個(gè)子函數(shù)是改變字體顏色的功能

代碼:

[plain]?view plain?copy
  • assume?cs:code??
  • ??
  • code?segment??
  • ??
  • ????table?dw?sub1,?sub2???????????????????????????????????????????????????????????????????????;用直接定址表進(jìn)行地址的尋找??
  • ??
  • ????start:??????????????????????????????????????????????mov?ah,?1????????????????;ah存放調(diào)用的函數(shù)的序號(hào)ah是0就調(diào)用sub1,ah是1就調(diào)用sub2??
  • ????????????????????????????????????????????????????????mov?bl,?ah??
  • ????????????????????????????????????????????????????????mov?bh,?0??
  • ????????????????????????????????????????????????????????add?bx,?bx?????????????????????????????;因?yàn)閠able是dw型的數(shù)據(jù),所以要定址,必須要將定址的序列號(hào)乘以2??
  • ????????????????????????????????????????????????????????mov?al,?2????????????????;al存放的是顏色值??
  • ????????????????????????????????????????????????????????call?word?ptr?table[bx]????????????????;這句就是call的用法,直接定址到標(biāo)號(hào)處,直接調(diào)用標(biāo)號(hào)的函數(shù)??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????mov?ax,?4C00H??
  • ????????????????????????????????????????????????????????int?21H??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????sub1:???????????push?bx?????????????????????????????????;函數(shù)的作用是清屏??
  • ????????????????????????????????????????????????????????push?cx??
  • ????????????????????????????????????????????????????????push?es??
  • ????????????????????????????????????????????????????????push?ax??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????mov?bx,?0B800H??
  • ????????????????????????????????????????????????????????mov?es,?bx??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????mov?bx,?0??
  • ????????????????????????????????????????????????????????mov?cx,?2000??
  • ????????????????????????????????????????????????s1:?????mov?byte?ptr?es:[bx],?'?'??
  • ????????????????????????????????????????????????????????add?bx,?2??
  • ????????????????????????????????????????????????????????loop?s1??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????pop?ax??
  • ????????????????????????????????????????????????????????pop?es??
  • ????????????????????????????????????????????????????????pop?cx??
  • ????????????????????????????????????????????????????????pop?bx??
  • ????????????????????????????????????????????????????????ret??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????sub2:???????????push?ax?????????????????????????????;函數(shù)的功能是改變字體的顏色??
  • ????????????????????????????????????????????????????????push?es??
  • ????????????????????????????????????????????????????????push?bx??
  • ????????????????????????????????????????????????????????push?cx??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????mov?bx,?0B800H??
  • ????????????????????????????????????????????????????????mov?es,?bx??
  • ????????????????????????????????????????????????????????mov?bx,?1??
  • ????????????????????????????????????????????????????????mov?cx,?2000??
  • ????????????????????????????????????????????????s2:?????and?byte?ptr?es:[bx],?11111000B??????;先將后三位用and運(yùn)算清零??
  • ????????????????????????????????????????????????????????or?byte?ptr?es:[bx],?al??????????????;用or運(yùn)算將后三位用al替代??
  • ????????????????????????????????????????????????????????add?bx,?2??
  • ????????????????????????????????????????????????????????loop?s2??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????pop?cx??
  • ????????????????????????????????????????????????????????pop?bx??
  • ????????????????????????????????????????????????????????pop?es??
  • ????????????????????????????????????????????????????????pop?ax??
  • ????????????????????????????????????????????????????????ret??
  • ??????????????????????????????????????????????????????????
  • code?ends??
  • end?start??

  • 當(dāng)ah是0時(shí):


    當(dāng)ah是1時(shí):

    總結(jié)

    以上是生活随笔為你收集整理的汇编语言不带冒号标号的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。