最開始寫的有很多迴圈的(容易理解,但複雜性高)
assume cs:code,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 0,0,0,0,0,0,0,0
stack ends
code segment
start:
movax,data
movds,ax
movax,table
moves,ax
movax,stack
movss,ax
movsp,10h
mov bx,0
mov bp,0
mov cx,21
s:push
cx
mov si,0
mov cx,4
s0:mov
al,[bx+si]
moves:
[bp+si],al
incsi
loop s0
mov al,'
'mov
es:[bp+si+1
],al
add bx,4
add bp,16
popcx
loop s
mov bx,84
mov bp,5
mov cx,21
s1:mov ax,ds:
[bx]
mov dx,ds:[bx+2
]
moves:
[bp],ax
moves:[bp+2
],dx
mov al,'
'mov
es:[bp+4
],al
add bx,4
add bp,16
loop s1
mov bx,168
mov bp,10
mov cx,21
s2:mov ax,ds:
[bx]
moves:
[bp],ax
mov al,'
'mov
es:[bp+2
],ax
add bx,2
add bp,16
loop s2
mov bx,84
mov si,168
mov bp,13
mov cx,21
s3:mov ax,ds:
[bx]
mov dx,ds:[bx+2
]
div word ptr ds:
[si]
moves:
[bp],ax
mov al,'
'mov
es:[bp+2
],al
add si,2
add bx,4
add bp,16
loop s3
movax,4c00h
int21h
code ends
end start
修改後,只剩下乙個迴圈,**複製性減少了很多
assume cs:code,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 0,0,0,0,0,0,0,0
stack ends
code segment
start:
movax,data
movds,ax
movax,table
moves,ax
movax,stack
movss,ax
movsp,10h
mov bx,0
mov bp,0
mov si,0
mov cx,21
s:mov ax,ds:
[bx]
moves:
[bp],ax
mov ax,ds:[bx+2
]
moves:[bp+2
],ax
mov al,'
'mov
es:[bp+4
],al
mov ax,ds:[bx+84
]
mov dx,ds:[bx+84+2
]
moves:[bp+5
],ax
moves:[bp+7
],dx
mov al,'
'mov
es:[bp+9
],al
mov ax,ds:[si+168
]
moves:[bp+10
],ax
mov al,'
'mov
es:[bp+12
],ax
mov ax,ds:[bx+84
]
mov dx,ds:[bx+84+2
]
div word ptr ds:[si+168
]
moves:[bp+13
],ax
mov al,'
'mov
es:[bp+15
],al
add bp,16 //->用來表示table表內的記憶體偏移位址(用來控制table表的行數,以及間接地表示記憶體偏移位址)
add bx,4 //->用來表示dd性與字串型資料的偏移位址(每讀取一段資料後,需移動四個位元組
)add si,2 //->>用來表示dw性資料的偏移位址(每讀取一段資料後,只需移動兩個位元組)
loop s
movax,4c00h
int21h
code ends
end start
組合語言(王爽)實驗七
power idea公司從1975年到1995年的基本情況如下 年份收入 千美元 雇員人均收入 千美元 1975163 1976227 1977 3829 1978 135613?1979 239028?1980 800038?1995 5937000 17800 程式中已經定義好了這些資料,程式設...
王爽 組合語言 實驗七
王爽組合語言實驗七 assume cs code,ds data,es table data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1991 1992...
王爽 彙編實驗5
5 5 assume cs code a segment db 1,2,3,4,5,6,7,8 a ends b segment db 1,2,3,4,5,6,7,8 b ends c segment db 0,0,0,0,0,0,0,0 c ends code segment start mova...