老兄的作業期限怎麼都是不到一天...^^||
1.寫一個(擴充式)兩個整數型加法 組合語言 (因為題目是一個 兩個超長整數)
2.您可以假設兩個整數是無符號類形的 (也就是正整數)
3.使用DumpMem 技巧顯示其合(請參考文字書 141頁 -146頁)
*DumpMem : 將一段範圍內的記憶體內容以16進位的格式寫入到標準輸出上
4.附註:這個整數資料在記憶體中是以 little-endian (低位組在前)之順序存放
5.可能使用的指令:
(1.)ADC : 用進位旗標做加法,例如:
ADC dest source ; dest = dest + source + CF
(2.)CLC : 清除進位旗標, 意義為 Set CF = 0
(3.)STC : 設定進位旗標, 意義為 Set CF = 1
簡單加法如下
語法:
DATA SEGMENT ;定義了一個資料區段(DATA SEGMENT),來做
X1 DW ? ;為變數X1、X2 的儲存區。
X2 DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN PROC FAR
MOV AX,X1
ADD AX,X2
BEGIN ENDP
CODE ENDS
END BEGIN
ADC是將來源和目的運算元相加外再加上進位旗標(CF)的值,亦即,如進位旗標被設
定為1時,兩數相加結果再加1,如進位旗標被清除為0時就不再加1。
二個雙字組數的高階字組放在BX和DX,低階字組放在AX和CX,兩數相加時只要:
語法:
ADD AX,CX '--|_ BX:AX
ADC BX,DX '--| +) DX:CX
' --------
' BX:AX
請以此為基礎設計之
(也就是BX+AX 有進位的話 BX+DX就會再加一)
參考:
http://webbbs.muarock.net/cgi-bin/bb...2E15/AA271209C