title: 王爽《組合語言》(第四版) 實驗7
tags:
id: 『258』
categories:
這個實驗確實是比較繁瑣,而且我先是手寫的**,有很多考慮錯誤的地方,最後話了2個多小時才解決掉。
;迄今為止最麻煩的程式
assume cs:code,es:table,ss:stack
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov cx,21
mov bx,0
mov di,0
mov si,0
s:push cx
mov si,0
mov cx,2
s1:mov ax,[bx][si]
mov es:[si],ax
mov ax,54h[bx][si]
mov es:5[si],ax
add si,2
loop s1
mov ax,ds:0a8h[di]
mov es:[0ah],ax
mov ax,[54h+bx]
mov dx,[56h+bx]
div word ptr es:[0ah]
mov es:[0dh],ax
add di,2
add bx,4
;es++
mov ax,es
add ax,1
mov es,ax
pop cx
loop s
mov ax,4c00h
int 21h
code ends
end start
這段程式的迴圈只有兩個,而且事實上巢狀的迴圈也可以寫開來,相對而言這個寫的還可以,暫存器也十分寬裕,完全沒有用到bp,通過棧又可以很容易地不使用di。我個人對這一段非常滿意。
最後的部分結果
可以用來對照(我現在還不知道該怎麼輸出,只好查記憶體,我太難了)
Intel組合語言程式設計(第四版) 勘誤
intel組合語言程式設計 第四版 美 kip r.irvine 著 溫玉傑 張家生 羅雲彬 等譯 第六章,6.3.3.3有符號比較 原文 1 movax,80h 2cmp ax,7fh3ja isabove 4jg isgreater 原文解釋 在上面的例子裡,ja指令並不跳轉,因為無符號數7fh...
王爽彙編第四版 實驗10 編寫子程式最佳答案
子程式描述 名稱 show str 功能 在指定的位置,用指定的顏色,顯示乙個用0結束的字串。引數 dh 行號 cl 顏色,ds si指向字串的首位址 返回 無 就用舉例 在螢幕的8行3列,用綠色顯示data段中的字串。說明 下面貼出 assume cs code,ds data 注 書中 data...
王爽 組合語言 實驗7
assume cs codesg,ds data ss stack data segment db 1975 1976 1977 1978 1979 1980 1981 1982 db 1983 1984 1985 1986 1987 1988 1989 1990 db 1991 1992 1993...