注意資料一開始是怎麼存放的,年份(字串)是順序存放,其他資料均是有按照高低位的規則存放,所以放入table中也相應地存放就好了(不用反過來),例:收入的第乙個資料:16 : 10 00 00 00。
;以上表示21個年份的21個字串
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資料
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
table segment
db 21 dup('year summ ne ?? ')
table ends
codesg segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov ss,ax
;對**中的每一列分別迴圈21次
;年份(4個位元組:需要存2次,因為ax一次只能放2個位元組)
mov bx,0
mov si,0
mov cx,21
s0: mov ax,[si]
mov ss:[bx],ax
mov ax,[si+2] ;si並沒有發生改變,所以下面的si要加4!
mov ss:[bx+2],ax
add bx,10h
add si,4 ;si發生改變
loop s0
;第乙個迴圈結束後,si = 54h(64),類似c的迴圈,所以已經到了下乙個資料(16)的開頭
;一開始資料之間不需要空格,空格是在table中
;收入 mov bx,5
mov cx,21
s1: mov ax,[si] ;不是mov ax,[si+2],注意一開始資料的存放方式
mov ss:[bx],ax
mov ax,[si+2]
mov ss:[bx+2],ax
add bx,10h
add si,4
loop s1
;雇員數
mov bx,10
mov cx,21
s2: mov ax,[si]
mov ss:[bx],ax
add bx,10h
add si,2
loop s2
;人均收入
mov bp,0
mov si,5
mov cx,21
s3: mov dx,ss:[bp+si+2] ;高位放dx
mov ax,ss:[bp+si] ;低位放ax
mov bx,ss:[bp+si+5]
div bx
mov ss:[bp+si+8],ax
add bp,10h
loop s3
mov ax,4c00h
int 21h
codesg ends
end start
結果如下:(圖中分別是年份、收入、雇員人數、人均收入)
實驗7 定址方式在結構化資料訪問總的應用
做本實驗時明顯感覺暫存器不夠用,所以要對bx,si,di,bp的使用仔細閱讀,本題比較瑣碎,做本題更需要的是耐心,耐心,耐心。assume cs code data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 198...
實驗七 定址方式在結構化資料訪問中的應用
assume cs codesg,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 db 1993...
重做實驗七 定址方式在結構化資料訪問中的應用
先處理第一行所有資料 實驗七 定址方式在結構化資料訪問中的應用 程式設計 將data段中的資料 按照如下格式寫到table段中,並計算21年中的人均收入 取整 結果也按照下面的格式儲存在table段中 assume cs code,ds data,ss stack data segment db 1...