址方式在结构化数据访问中的应用)

址方式在结构化数据访问中的应用

一. 实验目的

1、 掌握直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址定位内存的方法。
2、 Div指令的用法。
3、 寻址方式的综合应用。

二.实验内容

1、 不同寻址方式在结构化数据访问中的灵活运用。
2、 Div指令的使用。
3、 Debug调试追踪。

三. 实验内容

Power idea公司从1975年成立一直到1995年的基本情况如下。
址方式在结构化数据访问中的应用)下面的程序中,已经定义好了这些数据:

assume cs:codesg
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个字符串
      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个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 sumn ne ?? ’)
table ends

编程,将data段中的数据按如下格式写入到table段中,并计算21年终的人均收入(取整),结果也按照下面的格式保存在table段中。
址方式在结构化数据访问中的应用)
注:可将data段中的数据看出多个数组,而将table段中的数据看成是一个结构型数据的数组,每个结构型数据组包含多个数据项。可用bx定位每个结构型数据,用idata定位数据项,用si定位数组项中的每个元素,对于table中数据的访问可采用[bx].idata和[bx].idata[si]的寻址方式。
完成代码编写,并上机调试,追踪运行结果。

四. 结果

完整代码:

assume cs:code
data segment
    db '1975','1976','1977','1978','1979','1980', '1981'
    db '1982', '1983','1984', '1985','1986', '1987','1988'
    db '1989','1990','1991','1992','1993','1994','1995'
    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479
    dd 140417,197514,345980,590827,803530,118300,1843000
    dd 2759000,3753000,4649000,5937000
	
    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037
    dw 5635,8226,11542,14430,15257,17800
data ends
table segment
   db 21 dup ('year summ ne ?? ')
table ends
code segment
	start:							
			mov ax,data
			mov es,ax
			mov ax,table
			mov ds,ax
			
			mov bx,0				
			mov bp,0				
			mov si,0				
			mov cx,21				
			a:						
				mov ax,es:[bp+0]
				mov ds:[bx+0],ax
				mov ax,es:[bp+2]
				mov ds:[bx+2],ax				
				mov ax,es:[bp+54H]
				mov ds:[bx+5],ax
				mov ax,es:[bp+56H]
				mov ds:[bx+7],ax					
				mov ax,es:[si+0A8H]
				mov ds:[bx+10],ax
							
				mov ax,ds:[bx+5]
				mov dx,ds:[bx+7]
				div word ptr ds:[bx+10]
				mov ds:[bx+13],ax
								
				add si,2
				add bp,4
				add bx,16
			loop a
			mov ax,4C00H
			int 21H
code ends
end start

运行结果:
测试前:
址方式在结构化数据访问中的应用)
址方式在结构化数据访问中的应用)
测试后:
址方式在结构化数据访问中的应用)

五. 心得体会

1、该汇编程序就相当于C语言程序中给结构体数组赋值。汇编中的一些寻址方式(比如:[bx+idata],[bx+si],[bx+si+idata])的操作和C语言中的数组,结构体“相似”。
2、db是字节型数据,dw是字型数据,dd双字数据。

上一篇:实验4 汇编应用编程和c语言程序反汇编分析


下一篇:汇编语言(王爽)学习记录_第七章