實驗7 定址方式在結構化資料訪問中的應用

2021-09-29 21:31:51 字數 2103 閱讀 8950

注意資料一開始是怎麼存放的,年份(字串)是順序存放,其他資料均是有按照高低位的規則存放,所以放入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...