彙編實驗七(王爽)

2022-03-09 15:14:56 字數 4553 閱讀 2526

最開始寫的有很多迴圈的(容易理解,但複雜性高)

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...