1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| assume cs:code,ds:data,ss:stack
;实验7 寻址方式在结构化数据访问中的应用
;编程 将 data 段中的数据按照如下格式写入到 table 段中,并计算21年中的人均收入(取整) ;结果也按照下面的格式保存在 table 段中
data segment
db '1975','1976','1977','1978','1979','1980','1981','982','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 11542,14430,15257,17800 ; 以上是表示21年公司的员工数量
data ends
table segment ;0123456789ABCDEF db 21 dup ('year summ ne ?? ')
table ends
stack segment stack db 128 dup (0) stack ends
code segment
start: mov ax,stack mov ss,ax mov sp,128
mov ax,data mov ds,ax
mov ax,table mov es,ax
mov si,0 ;ds:[si] mov di,84 ;ds:[di] mov bx,168 ;ds:[bx] mov bp,0 ;es:[bp]
mov cx,21
inputTable: push ds:[si] pop es:[bp] push ds:[si+2] pop es:[bp+2]
;之后因为被除数为4个字节,32位。需要AX和DX两个寄存器存放,DX存放高16位,AX存放低16位 mov ax,ds:[di] mov dx,ds:[di+2] mov es:[bp+5],ax mov es:[bp+7],dx
push ds:[bx] pop es:[bp+0AH]
div word ptr ds:[bx] mov es:[bp+0DH],ax
add si,4 add di,4 add bx,2 add bp,16 loop inputTable
mov ax,4c00h int 21h
code ends
end start
|