《汇编语言 第3版》 王爽 实验7 思路及代码

最近在学习汇编语言,学到第8章的时候遇到了一个较难的大实验
实验7寻址方式在结构化数据访问中的应用
assembly_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

发表评论

沙发空缺中,还不快抢~