![]() |
|
|||||||
| 論壇說明 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
|
主題工具 | 顯示模式 |
|
|
#2 (permalink) |
|
超級版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
老兄的作業期限怎麼都是不到一天...^^||
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
定為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 |
|
|
送花文章: 2069,
|