最近在学习汇编语言,学到第8章的时候遇到了一个较难的大实验
实验7寻址方式在结构化数据访问中的应用
题目如上图
代码如下:
assume cs:codesg,ss:stacksg 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' dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 data ends table segment db 21 dup ('year summ ne ?? ') table ends stacksg segment dw 8 dup (0) stacksg ends ;using ax->transform/div ,{ bx,bp } -> locate , si->single locate ;es,ds -> locate data segment ,ss:sp stack segment -> 16bytes ->8 words stack segment ;summ ds:84 to ds:168 ->ds:[84,168 ) ;di -> single locate ne's data {from ds:168 to ds:210} -> ds:[168,210) codesg segment start: mov ax,data mov ds,ax mov ax,stacksg mov ss,ax mov sp,16 mov ax,table mov es,ax mov bx,0 mov bp,0 mov cx,21 mov di,0 s: push cx mov si,0 mov cx,4 s0: mov al,ds:[bp+si] mov es:[bx].0h[si],al ;move year mov al,ds:[bp].84[si] mov es:[bx].5h[si],al ;move summ inc si loop s0 mov ax,ds:168[di] mov es:[bx+0Ah],ax add di,2 ;move ne -> it's a word mov ax,es:[bx+5] mov dx,es:[bx+7] div word ptr es:[bx+0Ah] ;calculate div mov es:[bx+0Dh],ax ;move res add bx,16 add bp,4 pop cx loop s mov ax,4c00H int 21H codesg ends end start
发表评论
沙发空缺中,还不快抢~