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

2021-10-25 11:48:50 字數 4118 閱讀 1594

先處理第一行所有資料:

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

;程式設計 將data段中的資料 按照如下格式寫到table段中,並計算21年中的人均收入(取整)

;結果也按照下面的格式儲存在table段中

assume cs:code,ds:data,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'

;以上是表示21年的21個字串 year

dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514

dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

;以上是表示21年公司總收入的21個資料

dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

dw 11452,14430,15257,17800

;以上是表示21年公司的員工數量

data ends

table segment

;'0123456789abcdef'

db 21 dup(

'year sumn ne ?? '

)table ends

stack segment stack

db 128 dup (0)

stack ends

code segment

start: mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

mov sp,128

mov ax,table

mov es,ax

mov si,0 ;ds:[si] 年份 0~84

mov di,84 ;ds:[di] 公司總收入 84(54h)~168(a8h)

mov bx,168 ;ds:[bx] 員工數量 168~210

mov bp,0 ;es:[bp] table

;處理第一行的年份 通過棧

push ds:[si]

;拿到低位址 push ds:[si]指將ds:[si]中的內容送入棧中

pop es:[bp]

;從棧頂取出資料送入es:[bp]

push ds:[si+2]

;拿到高位址的那兩個位元組 ;將ds:[si+2]中的內容送入棧中

pop es:[bp+2]

;從棧頂取出資料送入es:[bp+2]

;處理第一行的公司總收入(被除數) 通過暫存器

;'0123456789abcdef'

;db 21 dup(

'year sumn ne ?? '

) mov ax,ds:[di]

;低位放入ax

mov dx,ds:[di+2]

;高位放入dx

mov es:[bp+5],ax;低位放入5這個位置

mov es:[bp+7],dx;高位放在7這個位置

;處理員工數量(除數)

push ds:[bx]

pop es:[bp+0ah]

div word ptr ds:[bx]

mov es:[bp+0dh],ax;商

因為總共要處理21行:

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

;程式設計 將data段中的資料 按照如下格式寫到table段中,並計算21年中的人均收入(取整)

;結果也按照下面的格式儲存在table段中

assume cs:code,ds:data,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'

;以上是表示21年的21個字串 year

dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514

dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

;以上是表示21年公司總收入的21個資料

dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

dw 11452,14430,15257,17800

;以上是表示21年公司的員工數量

data ends

table segment

;'0123456789abcdef'

db 21 dup(

'year sumn ne ?? '

)table ends

stack segment stack

db 128 dup (0)

stack ends

code segment

start: mov ax,data

mov ds,ax

mov ax,stack

mov ss,ax

mov sp,128

mov ax,table

mov es,ax

mov si,0 ;ds:[si] 年份 0~84

mov di,84 ;ds:[di] 公司總收入 84(54h)~168(a8h)

mov bx,168 ;ds:[bx] 員工數量 168~210

mov bp,0 ;es:[bp] table

mov cx,21

;處理第一行的年份 通過棧

inputable:

push ds:[si]

;拿到低位址

pop es:[bp]

push ds:[si+2]

;拿到高位址的那兩個位元組

pop es:[bp+2]

;處理第一行的公司總收入(被除數) 通過暫存器

;'0123456789abcdef'

;db 21 dup(

'year sumn ne ?? '

) mov ax,ds:[di]

;低位放入ax

mov dx,ds:[di+2]

;高位放入dx

mov es:[bp+5],ax;低位放入5這個位置

mov es:[bp+7],dx;高位放在7這個位置

;處理員工數量(除數)

push ds:[bx]

pop es:[bp+0ah]

div word ptr ds:[bx]

mov es:[bp+0dh],ax;商

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

實驗七 定址方式在結構化資料中的應用 mov si,0 定位data中的單個年份字元 mov bx,0 定位每個結構型資料 mov di,0 定位收入 mov bp,0 定位人均收入 mov cx,21 s push cx mov cx,4 s1 mov al,ds si 拷貝年份 mov es b...

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

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

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

做本實驗時明顯感覺暫存器不夠用,所以要對bx,si,di,bp的使用仔細閱讀,本題比較瑣碎,做本題更需要的是耐心,耐心,耐心。assume cs code data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 198...