X86匯編教程目錄 http://www.zg4o1577.cn/mcu/2619.html
本章主要是加強學習對DEBUG的使用.所以真正學習新知識的部分可能少點.大部分是在復習.. 之前的一些東西.另外...上一章居然沒人交作業!包括學習我的教程一向很努力的殤星君也因為迷上了某某游戲而只是轉載下,沒有仔細看......不過, 經過了幾天,回復數量也勉強讓我滿意了(和空間里其它文章比起來).
本章主要是加強學習對DEBUG的使用.所以真正學習新知識的部分可能少點.大部分是在復習.. 之前的一些東西.另外...上一章居然沒人交作業!包括學習我的教程一向很努力的殤星君也因為迷上了某某游戲而只是轉載下,沒有仔細看......不過, 經過了幾天,回復數量也勉強讓我滿意了(和空間里其它文章比起來).
這次,新教4條指令:
指令名 :ADD
操作數數量 :2
操作數名 :目標操作數,源操作數
指令用途 :把2個操作數相加,和保存在目標操作數
指令名 :SUB
其余大多同ADD指令一樣,有一點不同:此指令是減法指令
指令名 :INC
指令名 :INC
操作數數量 :1(注意,只有1個操作數!)
操作數名 :目標操作數
指令用途 :把目標操作數+1,結果保存回目標操作數.
指令名 :DEC
指令名 :DEC
其余大多同INC指令一樣,有一點不同:此指令是把目標操作數減1
INC 和DEC指令雖然只做加1和減1的操作,但是只有1個操作數,并且計算過程變化不多,占用的內存少點,所以執行速度比ADD和SUB指令快很多,當然,這所謂的很多,連萬分之一秒都沒有...只有在每秒鐘計算幾億次的情況下才能體驗到.恩,對于高手來說,能快一點點都是很重要的.
INC 和DEC指令雖然只做加1和減1的操作,但是只有1個操作數,并且計算過程變化不多,占用的內存少點,所以執行速度比ADD和SUB指令快很多,當然,這所謂的很多,連萬分之一秒都沒有...只有在每秒鐘計算幾億次的情況下才能體驗到.恩,對于高手來說,能快一點點都是很重要的.
好了,編寫代碼調試吧!我的代碼:
ORG 0100H
MOV AX,5
MOV BX,3
ADD AX,BX
SUB AX,BX
INC AX
DEC AX
至于怎么編譯,第7章已經說過了.這里就不解釋了...編譯完成后,用DeBug導入調試吧!~
R指令查看狀態,此時第一條指令還沒執行,AX寄存器什么都沒有,第一條指令是MOV AX,0005 ,也就是往AX寄存器寫入數值5(見下圖):
T指令執行一行代碼,執行第一行代碼,看,AX寄存器寫入成功,接著是BX寄存器:
再次T指令,執行一行,好了,現在
AX=5
BX=3
接著就是本章講的ADD指令了(見下圖):
ADD,加法指令,ADD AX,BX 就是把AX和BX相加,結果保存到AX,原本的AX是5,BX是3,相加為8,看看下面對不對:
接著是SUB,減法指令,SUB AX,BX 就是從AX的值里減去BX的值,結果保存在AX里,AX原本是8,BX是3,SUB后...AX就是5了!(見下圖):
接著是,INC指令了,這指令的機器碼只有1個字節,也就是說CPU讀取這個指令只需要讀取一字節內存就夠了,操作數只有1個.AX,用途是把目標操作數的值加1然后保存回去,看看效果吧(見下圖):
與INC對應的是DEC,用途...不解釋,直接看下圖:
本章就講到這里了.差不多該講解內存操作了.......
作業:編寫一段程序,通過各種加減指令,讓AX,BX,CX,DX寄存器最終值為100!
規則1:代碼中不得出現超過10的數字!
規則2:必須4個指令都用到,ADD SUB INC DEC
作業提交郵箱:o7007@vip.qq.com