1.熟悉組合語言二進位制多位元組加法基本指令的使用方法;
2.熟悉組合語言二進位制多位元組減法基本指令的使用方法;
3.掌握組合語言程式設計的一般結構。
1.硬體環境:微機cpu 486以上,500mb以上硬碟,32m以上記憶體;
2.軟體環境:裝有masm 5.0、debug、link和edit等應用程式。
1、二進位制加法基本指令
(1)add指令
格式:add dst,src
該指令把源運算元(src)指向的資料與目的運算元(dst)相加後,將結果放到目的運算元(dst)中,所執行的操作:(dst)ß(src)+(dst)
src和dst不能同時為儲存器運算元和段暫存器,同時src和dst的資料型別要匹配,要同是位元組或字。受影響的標誌位有:of,sf,zf,af,pf,cf。
(2)adc指令
格式:adc dst,src
所執行的操作:(dst)ß(src)+(dst)+cf 了解清楚進製是怎樣加的
該指令把兩個運算元(src和dst)相加以後,再加上進製標誌cf,將結果放到目的運算元(dst)中。受影響的標誌位有:of,sf,zf,af,pf,cf。adc指令多用於多精度資料相加。
2、二進位制減法基本指令
(1)sub指令
格式:sub dst,src
所執行的操作:(dst)ß (dst)-(src)
該指令把源運算元(src)指向的資料與目的運算元(dst)相減後,將結果放到目的運算元(dst)中,src和dst不能同時為儲存器運算元和段暫存器(,同時src和dst的資料型別要匹配,要同是位元組或字。受影響的標誌位有:of,sf,zf,af,pf,cf。
(2)sbb指令
格式:sbb dst,src
(dst)ß (dst)-(src)-cf 了解清楚進製是怎樣減的
該指令把兩個運算元(src和dst)相減以後,再減去cf,將結果放到目的運算元(dst)中。受影響的標誌位有:of,sf,zf,af,pf,cf。sbb指令多用於多精度資料相加。
3、多精度數相加程式設計示例
將兩個雙字長度的數分別相加並將結果存放在result中。
首先進行題目分析:
(1)如何存放多精度數?
多精度數的存放有兩種方式,高位址優先(如1234h,5678h表示56781234h)和低位址優先(如1234h,5678h表示12345678h),具體的存放方式由使用者根據自己的習慣選擇。在這裡我們使用了高位址優先的儲存方式。
(2)分析程式設計
由於組合語言的add,adc,sub,sbb指令都不支援兩個運算元都是儲存器運算元的情況,因此將乙個運算元的低字放到暫存器ax中,高字放到暫存器dx中分別完成高字部分的加法,高字部分的帶進製加法。
(3)具體程式設計
data segment
data1 dw 5311h,8a13h ;表示資料8a135311h
data2 dw 4783h,9526h ;表示資料95264783h
result dw 2 dup(?) ;存放多位元組加法的結果
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,data1
mov dx,data1+2
add ax,data2 ;低字部分相加
adc dx,data2+2 ;高字部分帶進製相加
mov result,ax ;存放低字部分相加結果
mov result+2,dx ;存放高字部分相加結果
code ends
end start單步執行除錯上面的程式,理解上面程式是如何實現長度為
2字的兩個資料相加的。改變
data1
、data2
的值再單步執行,觀察程式執行的過程以及對標誌位的影響。理解該程式後,試繪製出該程式對應的流程圖,並完成下面的內容。
1、實驗內容
(1)編寫程式,實現長度為2字的兩個多精度數相減。
(2)編寫程式,實現乙個長度為3字的多精度數和乙個長度為2字的多精度數相加減。
2、實驗步驟
(1)預習多精度數加減法基本知識,根據實驗內容,畫出流程圖;
(2)利用edit或其他編輯軟體,編寫彙編源程式,取名為「ch2ex1.asm」、「ch2ex2.asm」。
(3)彙編、連線該源程式,產生「ch2ex1.exe」、「ch2ex2.exe」檔案;
(4)對「ch2ex1.exe」和「ch2ex2.exe」檔案進行除錯執行:利用debug的t命令或g命令和d命令檢視資料區的加減法結果是否正確。
實驗要求
(1)畫出各程式流程圖;
(2)列出程式清單,加上適量注釋;
(3)回答思考問題;
(4)記錄實驗結果。
把繪製的流程圖、編寫的源**(兩個:(1)實現長度為2字的兩個多精度數相減;
二進位制底層加減法的實現原理
計算機底層儲存的基本單位為bit 也就是0與1,數字的表示也是以一串二進位制來表示。那麼如何通過一連串的二進位制來完成計算器的計算功能呢?何為原碼反碼補碼?在了解底層加減法之前,先了解下原碼反碼與補碼的區別 整數分為正整數與負整數 怎樣根據二進位制設定乙個數是正數還是負數?根據首位符號 0表示為正數...
二進位制減法運算
如果採用與十進位制減法相同的方法,那麼從乙個較大的二進位制數中減去乙個較小的無符號二進位制數就很容易了。示例如下 01101 十進位制數 13 00111 十進位制數 7 位 0 上的減法非常簡單 01101 00111 001001 00111 1000011 00111 110最後,最高兩位都執...
二進位制的減法
這裡需要說明的是,在計算機中做二進位制數運算時,一定要明確是在多少位的整型前提下進行的,這樣才能夠正確處理位數溢位的問題。其實減法也可以看成加法 6 4 無論加減法總結 補碼相加 結果再求補碼 1表示負 0表示正 在計算機中,負數是使用它的補碼來表示的。所謂補碼,就是反碼 1。所謂反碼,就是二進位制...