組合語言 使用匯程式設計序計算2的8次方

2021-08-14 21:14:29 字數 1488 閱讀 8758

在部落格 彙編指令:使用彙編指令計算2的8次方 中使用彙編指令進行計算的,太不可科學了,是用來熟悉彙編 練習指令滴。這次我們用真正的組合語言進行程式設計來計算2的8次方

在本程式中,沒有直接的數學庫什麼之類的快捷演算法,只有 笨拙的累加,迴圈的進行累加,迴圈的功能還是有的,計算機最擅長的當然是迴圈了。

在本程式中,會用到loop 迴圈指令,mov 傳送指令 ,將暫存器內容送到記憶體單元中...。如果看不懂請看書去。

匯程式設計序編寫格式,編寫指令段的格式

;彙編計算 2的8 次方,將計算結果放到0020:0的連續位址上。

assume cs:code ;標明code 為指令段和cs段寄存關聯

code segment ;segment 和 end 成對出現 定義乙個段

;彙編**...

mov ax,4c00h ;這2條語句實現的功能是程式的返回,放在程式末尾

int 21h

code ends

end ;匯程式設計序結束標誌

;彙編計算 2的8 次方,將計算結果放到0020:0的連續位址上。

assume cs:code ;標明code 為指令段和cs段寄存關聯

code segment ;segment 和 end 成對出現 定義乙個段

mov ax,0020h

mov ds,ax

mov ax,2 ;初始化值為2

mov cx,7 ;cx控制 loop 迴圈指令 執行次數 7次

s: add ax,ax ;對ax 進行累加 2+2 = 2^2 = 4, 4+4=2^3 ...

loop s

mov ds:[0],ax ;將計算結果值放到0020:0記憶體單元

mov ax,4c00h ;這2條語句實現的功能是程式的返回,放在程式末尾

int 21h

code ends

end ;匯程式設計序結束標誌

順便說下彙編源程式的編譯、連線、和除錯。

彙編源程式是通過masm.exe 進行編譯,通過 link.exe 將 obj檔案進行連線,然後生成 .exe可執行檔案

除錯可以用t命令 一步一步執行 程式,可以g命令 直接將程式執行完

結果可以看到懂麼,0020:0000 記憶體單元值為0,0020:0001記憶體單元 是01 ,高位存高位元組低位存低位元組,2個連續記憶體單元的值為0100h 16進製制轉出10進製就是 256!

組合語言 匯程式設計序初識

mov ax,bx 將bx暫存器中的資料複製移動到ax中 add ax,bx 執行ax bx運算,將運算結果賦值給ax,即ax ax bx sub ax,bx 執行ax bx運算,將運算結果賦值給ax,即ax ax bx inc ax 執行 ax 1 運算,將運算結果賦值給ax,即ax ax 1 j...

組合語言程式vs 匯程式設計序

組成原理 這是個常常被人拿來挖坑的地方。組合語言程式就是你用組合語言寫的文字型的程式,我們說用一堆助記符來寫的源 匯程式設計序是彙編階段用來把組合語言翻譯成機器語言指令的程式。二者是不同的概念。比如有些時候問,計算機能夠直接執行的是 a.機器語言程式 b.組合語言程式 c.硬體描述語言程式 組合語言...

ARM彙編程式設計之C程式呼叫匯程式設計序

編寫乙個彙編子程式,實現兩個字資料的加法運算,編寫乙個c程式來呼叫該彙編子程式,並將運算結果使用printf 函式顯示出來。示例如下 為解決這個問題,分別編寫滿足需求的c程式和匯程式設計序。c程式源 define uint32 unsigned int extern uint32 add uint3...