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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

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

匯編語言中,帶冒號的標號在程序中可以知道代碼的位置,而不帶冒號的標號可以在程序中找到代碼位置的同時知道所表示的參數的大小

比如說:table db 0,這里的table就是一個不帶冒號的標號,如果定位到這個標號,那么就知道這個標號后面的數值是db型的


這里還需要強調一下call指令的一種用法,call word ptr 內存單元地址

這個指令的作用可以寫為:push IP

jmp word ptr 內存單元地址

這樣,在用直接地址的方法時,就可以用call指令來定位表中存放的標號地址,調用子函數,下面的例程就是用call指令來實現對地址的定址方法

代碼功能:用ah來確定調用的子函數的序號,第一個子函數是清屏的功能,第二個子函數是改變字體顏色的功能

代碼:

[plain]?view plain?copy
  • assume?cs:code??
  • ??
  • code?segment??
  • ??
  • ????table?dw?sub1,?sub2???????????????????????????????????????????????????????????????????????;用直接定址表進行地址的尋找??
  • ??
  • ????start:??????????????????????????????????????????????mov?ah,?1????????????????;ah存放調用的函數的序號ah是0就調用sub1,ah是1就調用sub2??
  • ????????????????????????????????????????????????????????mov?bl,?ah??
  • ????????????????????????????????????????????????????????mov?bh,?0??
  • ????????????????????????????????????????????????????????add?bx,?bx?????????????????????????????;因為table是dw型的數據,所以要定址,必須要將定址的序列號乘以2??
  • ????????????????????????????????????????????????????????mov?al,?2????????????????;al存放的是顏色值??
  • ????????????????????????????????????????????????????????call?word?ptr?table[bx]????????????????;這句就是call的用法,直接定址到標號處,直接調用標號的函數??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????mov?ax,?4C00H??
  • ????????????????????????????????????????????????????????int?21H??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????sub1:???????????push?bx?????????????????????????????????;函數的作用是清屏??
  • ????????????????????????????????????????????????????????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?????????????????????????????;函數的功能是改變字體的顏色??
  • ????????????????????????????????????????????????????????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運算清零??
  • ????????????????????????????????????????????????????????or?byte?ptr?es:[bx],?al??????????????;用or運算將后三位用al替代??
  • ????????????????????????????????????????????????????????add?bx,?2??
  • ????????????????????????????????????????????????????????loop?s2??
  • ??????????????????????????????????????????????????????????
  • ????????????????????????????????????????????????????????pop?cx??
  • ????????????????????????????????????????????????????????pop?bx??
  • ????????????????????????????????????????????????????????pop?es??
  • ????????????????????????????????????????????????????????pop?ax??
  • ????????????????????????????????????????????????????????ret??
  • ??????????????????????????????????????????????????????????
  • code?ends??
  • end?start??

  • 當ah是0時:


    當ah是1時:

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。