分析:考慮到table表有21條資料,每條資料有4個成員,年份(4個位元組),收入(4個位元組),
雇員數(2個位元組),人均收入(2個位元組),加上中間的空格,共16個位元組
用bp+si+idata 在data段中定位年份和收入
用di+si 在data段中定位雇員數
用bx+idata 在es段定位資料 (注:es就是table)
採用迴圈結構,每迴圈一次就填完一條資料
迴圈21次,正好填完
每填完一條資料,bx+10h,定位下一條資料的首位址
bp+4,定位下乙個年份和收入
di+2 定位下乙個雇員數資料
assume cs:code,ds:data,ss:stack
table segment
db 21
dup(
'year summ ne ?? ');
16個位元組
;年份(dd) 收入(dd) 雇員數(dw) 人均收入(dw)
;table ends
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'
;21年的21個字串dword 84個位元組
dd 16,22
,382
,1356
,2390
,8000
,16000
,24486
,50065
,97479
,140417
,197514
dd 345980
,590827
,803530
,1183000
,1843000
,2759000
,3753000
,4649000
,5937000
;21年的公司總收入dword型資料 84個位元組
dw 3,7
,9,13
,28,38
,130
,220
,476
,778
,1001
,1442
,2258
,2793
,4037
,5635
,8226
dw 11542
,14430
,15257
,17800
;21年公司雇員人數的21個word型資料
data ends
stack segment
dw 0,0
,0,0
,0,0
,0,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 bp,
0 mov di,
0 mov si,
0
s: push cx
;年份
mov cx,
2 mov si,
0
s1: mov ax,ds:
[bp+si]
mov es:
[bx+si]
,ax add si,
2 loop s1
;收入mov cx,
2 mov si,
0 s2: mov ax,ds:[84
+bp+si]
mov es:
[bx+si+5]
,ax add si,
2 loop s2
;雇員mov ax,ds:
[di+
168]
mov es:
[bx+10]
,ax
;人均收入
mov ax,es:
[bx+5]
mov dx,es:
[bx+7]
div word ptr es:
[bx+10]
mov es:
[bx+
0dh]
,ax
add di,
2 add bp,
4 add bx,
10h pop cx
loop s
code ends
end start
王爽《組合語言(第三版)》 實驗七
萌新學彙編 邊學邊練 以下是實驗七的練手 assume cs codesg,ss stack data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1991...
《組合語言》第三版 實驗五
1 將下面的程式編譯,鏈結,用debug載入,跟蹤,然後回答問題 1 資料不變 1 資料不變 2 cs 076c ss 076b ds 076a 4 占用空間 n 16 0?n n 1 3 end start 1 資料不變 2.cs 076a ss 076e ds 076d 3.data x 3 s...
組合語言 第三版 王爽 實驗七 獨立完成
assume cs codesg 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 以上是表示2...