实验7 寻址方式在结构化数据访问中的应用

合集下载

汇编语言-王爽-完美高清版视频教程

汇编语言-王爽-完美高清版视频教程

汇编语言》-王爽-完美高清版-零基础汇编语言入门书籍PDF格式同时按ctrl+要下载的地址既可下载对应的视频下载地址:/file/f61cb107c8001第一章- 基础知识01下载地址:/file/f6806f45b8002第一章- 基础知识02下载地址:/file/f6ec42d4d3003第一章- 基础知识03下载地址:/file/f6deb05ec4004第一章-基础知识04下载地址:/file/f6e51f6838005第一章- 基础知识05下载地址:/file/f66edaf8d3006第二章- 寄存器(CPU工作原理)01下载地址:/file/f6d07e07b9007第二章- 寄存器(CPU工作原理)02下载地址:/file/f6d7f585a8008第二章- 寄存器(CPU工作原理)03下载地址:/file/f639d8b3cf009第二章- 寄存器(CPU工作原理)04下载地址:/file/f6dcadbde6010第二章- 寄存器(CPU工作原理)05下载地址:/file/f6ea3f01c1011第二章- 寄存器(CPU工作原理)06下载地址:/file/f65b96a06f012第二章- 寄存器(CPU工作原理)07下载地址:/file/f682da085a013第三章- 寄存器(内存访问)01下载地址:/file/f6486e698014第三章- 寄存器(内存访问)02下载地址:/file/f6b7491d9f015第三章- 寄存器(内存访问)03下载地址:/file/f622b7f9a7016第三章- 寄存器(内存访问)04下载地址:/file/f64e2424b9017第三章- 寄存器(内存访问)05下载地址:/file/f6e5132d4d018第三章- 寄存器(内存访问)06下载地址:/file/f655c10e86019第三章- 寄存器(内存访问)07下载地址:/file/f6b22e64e6020第四章- 第一个程序01下载地址:/file/f6812126a4021第四章- 第一个程序02下载地址:/file/f6523e625c022第四章- 第一个程序03下载地址:/file/f63e0ccb28023第五章- [BX]和loop指令01下载地址:/file/f611e07b8a#024第五章- [BX]和loop指令02下载地址:/file/f6e047bccc#025第五章- [BX]和loop指令03下载地址:/file/f6d348d781#026第五章- [BX]和loop指令04下载地址:/file/f6ada24153#027第五章- [BX]和loop指令05下载地址:/file/f64f97518b#028第五章- [BX]和loop指令06下载地址:/file/f6f9ba96f8#029第六章- 包含多个段的程序01下载地址:/file/f650e06f38#030第六章- 包含多个段的程序02下载地址:/file/f683ee5b2a#031第六章- 包含多个段的程序03下载地址:/file/f69009bfc2#032第七章- 更灵活定位内存地址的方法01下载地址:/file/f6ea427646#033第七章- 更灵活定位内存地址的方法02下载地址:/file/f6acdc6b7f#034第七章- 更灵活定位内存地址的方法03下载地址:/file/f6c85745d0#035第七章- 更灵活定位内存地址的方法04下载地址:/file/f61a26cf12#36第七章- 更灵活定位内存地址的方法05下载地址:/file/f631edf5c6#037第七章- 更灵活定位内存地址的方法06下载地址:/file/f6b0fa6fb8#038第八章- 数据处理的两个基本问题01下载地址:/file/f6f5fe8962#039第八章- 数据处理的两个基本问题02下载地址:/file/f6bf975e0#040第八章- 数据处理的两个基本问题03下载地址:/file/f6d522784c#041第八章- 数据处理的两个基本问题04下载地址:/file/f6b5ac9991# 042实验七寻址方式在结构化数据访问中的应用下载地址:/file/f62e80ced5#076第十七章_使用BIOS进行键盘输入和磁盘读写02/file/bhbgrnfz#077第十七章_使用BIOS进行键盘输入和磁盘读写03[url=/file/dnsl0kxp#[/sell]/file/dnsl0kxp#[/sell[/url]]。

汇编实验:寻址方式在数据访问中的应用

汇编实验:寻址方式在数据访问中的应用

汇编实验:寻址⽅式在数据访问中的应⽤例⼦:assume cs:codesgdatasg segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985'db '1986','1987','1988','1989','1990','1991','1992','1993','1994','1995';表⽰21年的21个字符串dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827dd 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,8226dw 11542,14430,15257,17800;表⽰21年公司雇员⼈数的21个数据datasg endstable segmentdb 21 dup ('year summ ne ?? ')table ends将data段中的数据按如下格式写⼊table中: 代码如下:assume cs:codesgdatasg segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985'db '1986','1987','1988','1989','1990','1991','1992','1993','1994','1995';表⽰21年的21个字符串dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827dd 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,8226dw 11542,14430,15257,17800;表⽰21年公司雇员⼈数的21个数据datasg endstable segmentdb 21 dup ('year summ ne ?? ')table endsstacksg segmentdb 16 dup (0)stacksg endscodesg segmentstart:mov ax,datasgmov ds,axmov ax,tablemov es,axmov ax,stacksgmov ss,axmov sp,16;栈⽤来储存CX中的数据来进⾏双重循环mov cx,21mov bx,0;BX储存table段中每⾏的内存单元,0<=(BX)<=F,所以每次循环BX要清0mov di,0;DI⽤来访问储存公司收⼊的数据段mov si,0;SI⽤来访问储存公司员⼯数量的数据段mov bp,0;BP⽤来访问储存公司年份的数据段s0:push cxmov cx,4mov bx,0s1:mov al,ds:[bp]mov es:[bx],alinc bpinc bxloop s1;第⼀次循环完毕BP会指向下⼀个年份的⾸地址,BX会指向table:04H,下⾯将空格输⼊此单元格mov al,''mov es:[bx],alinc bxmov ax,ds:[si+84];21个年份字符串,每个年份有4个数字字符,共占84Byte,si = 0时ds:[si+84]指向第⼀年公司收⼊mov es:[bx],axadd bx,2add si,2mov ax,ds:[si+84]mov es:[bx],axadd si,2add bx,2;此代码段结束时si += 4,ds:[si+84]指向下⼀年收⼊mov al,''mov es:[bx],alinc bxmov ax,ds:[di+168]mov es:[bx],axadd di,2add bx,2mov al,''mov es:[bx],almov ax,es:[5]mov dx,es:[7]div word ptr es:[0ah];注意⼀下被除数32位除法的规则mov es:[0dh],axmov al,''mov es:[bx],almov ax,esinc axmov es,ax;在第⼀次循环结束时给es⾃增1,使其指向table:10H,在以后的循环同理;让其指向“下⼀⾏”pop cxloop s0mov ax,4c00hint 21hcodesg endsend start运⾏结果:。

七种寻址方式举例例题

七种寻址方式举例例题

七种寻址方式举例例题
1. 直接寻址方式:例如,要访问内存中地址为100的数据,直接将地址100传递给内存控制器即可。

2. 立即寻址方式:例如,要将立即数5存储到寄存器R1中,直接将立即数5传递给寄存器R1即可。

3. 间接寻址方式:例如,要访问内存中地址存储在寄存器R2中的数据,先从寄存器R2中获取地址,再将该地址传递给内存控制器。

4. 寄存器寻址方式:例如,要将寄存器R3中的数据存储到寄存器R4中,直接将寄存器R3和寄存器R4传递给寄存器控制器。

5. 寄存器间接寻址方式:例如,要访问内存中地址为寄存器R5中存储的地址的数据,先从寄存器R5中获取地址,再将该地址传递给内存控制器。

6. 基址寻址方式:例如,要访问内存中基地址为寄存器R6中存储的地址加上一个偏移量的数据,先从寄存器R6中获取基地址,再将基地址加上偏移量得到目标地址,最后将目标地址传递给内存控制器。

7. 变址寻址方式:例如,要访问内存中地址为寄存器R7中存储的地址加上寄存器R8中存储的地址的数据,先从寄存器
R7中获取地址,再从寄存器R8中获取地址,最后将两个地址相加得到目标地址,将目标地址传递给内存控制器。

汇编语言 王爽_完整答案

汇编语言 王爽_完整答案

第1章基础知识检测点1.1(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13。

(2)1KB的存储器有1024个存储单元。

存储单元的编号从0到1023。

(3)1KB的存储器可以存储1024*8个bit,1024个Byte。

(4)1GB、1MB、1KB分别是2^30、2^20、2^10 Byte。

(n^m的意思是n的m次幂)(5)8080、8088、80286、80386的地址总线宽度分别是16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。

则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。

(7)从内存中读取1024字节的数据,8086至少要读512次、80386至少要读256次。

(8)在存储器中,数据和程序以二进制形式存放。

第2章寄存器答案检测点2.1(1) 写出每条汇编指令执行后相关寄存器中的值。

mov ax,62627 AX=F4A3Hmov ah,31H AX=31A3Hmov al,23H AX=3123Hadd ax,ax AX=6246Hmov bx,826CH BX=826CHmov cx,ax CX=6246Hmov ax,bx AX=826CHadd ax,bx AX=04D8Hmov al,bh AX=0482Hmov ah,bl AX=6C82Hadd ah,ah AX=D882Hadd al,6 AX=D888Hadd al,al AX=D810Hmov ax,cx AX=6246H(2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。

解:mov ax,2add ax,axadd ax,axadd ax,ax检测点2.2(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。

内存操作数及寻址方式的使用

内存操作数及寻址方式的使用

武汉工程大学电气信息学院《面向对象程序设计》实验报告[ 1 ]专业班级过程装备与控制工程1班实验时间2015 年 5 月日学生学号实验地点机电工程学院205 学生姓名指导教师华夏实验项目内存操作数及寻址方式的使用实验类别设计实验实验学时3学时实验目的及要求通过实验掌握下列知识。

(1)DEBUG命令:G、N、W、L及Q。

(2)8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。

(3)8088指令:INC、DEC、LOOP、INT3、INT20H,寄存器SI、DI。

(4)8088汇编语言伪操作:BYTE PTR,WORD PTR.(5)求累加和程序和多字节加减法程序。

成绩评定表类别评分标准分值得分合计上机表现按时出勤、遵守纪律认真完成各项实验内容30分《电子线路CAD设计》实验报告报告质量程序代码规范、功能正确填写内容完整、体现收获70分评阅教师:日期:年月日实验内容(说明:此部分应包含:实验内容、实验步骤、实验数据与分析过程等)1.一、实验内容、实验方法与步骤、实验数据与结果分析1)内存操作数及各种寻址方式使用(1)先输入程序内容,用A命令输入上述程序,运行如下:(2)并用T命令逐条运行,运行如下:(3)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

程序运行如下:(4)注意D命令显示结果中右边的ASCII字符及双字节数存放法。

(5)思考有关指令中的BYTE PTR及WORD PTR伪操作不加行不行,试一试。

2)求累加和程序(1)用A命令将程序输入到100H开始的内存中,在输入时记下标号LOP和J的实际地址,在输入LOOP指令时LOP用实际地址代替。

(2)用命令NAA将此程序命名为文件AA(3)用R命令将BX:CX改为程序长度值(4)用命令W100将此程序存放到AA命名的磁盘文件中(5)用命令Q退出DEBUG实验总结(说明:总结实验认识、过程、效果、问题、收获、体会、意见和建议。

寻址方式微机原理及应用共48页文档

寻址方式微机原理及应用共48页文档
42、只有在人群中间,才能认识自 己。——德国
43、重复别人所说的话,只需要教育; 而要挑战别人所说的话,则需要头脑。—— 玛丽·佩蒂博恩·普尔
44、卓越的人一大优点是:在不利与艰 难的遭遇里百折不饶。——贝多芬
45、自己的饭量自己知道。——苏联
寻址方式微机原理及应用

26、我们像鹰一样,生来就是自由的 ,但是 为了生 存,我 们不得 不为自 己编织 一个笼 子,然 后把自 己关在 里面。 ——博 莱索

27、法律如果不讲道理,即使延续时 间再长 ,也还 是没有 制约力 的。— —爱·科 克

2

29、在一切能够接受法律支配的人类 的状态 中,哪 里没有 法律, 那里就 没有自 由。— —洛克

30、风俗可以造就法律,也可以废除 法律。 ——塞·约翰逊
41、学问是异常珍贵的东西,从任何源泉吸 收都不可耻。——阿卜·日·法拉兹

寻址方式与指令系统节

寻址方式与指令系统节

寻址方式与指令系统节导言在计算机科学中,寻址方式和指令系统是计算机体系结构设计中至关重要的两个方面。

寻址方式决定了数据的存取方式,而指令系统则规定了计算机执行操作的方法。

本文将探讨寻址方式和指令系统在计算机设计中的重要性,并对它们的一些常见形式和特点进行详细介绍。

寻址方式直接寻址直接寻址是一种简单的寻址方式,其中地址字段直接指向要访问的内存单元。

这种寻址方式效率高,但存储器可以直接访问的容量有限。

间接寻址在间接寻址中,地址字段指向另一个存储位置,该位置包含最终要访问的内存地址。

这种方式可以扩展寻址范围,但多了一次内存访问的开销。

寄存器寻址在寄存器寻址中,指令中直接给出一个寄存器地址,该寄存器中存储了要访问的内存地址。

这种方式速度快,但寄存器数量有限。

基址寻址基址寻址方式使用一个基址寄存器存储一个基地址,再使用另一个寄存器存储偏移量,通过将这两者相加得到最终的内存地址。

这种方式适合访问分散存储的数据结构。

变址寻址变址寻址方式类似于基址寻址,不同之处在于,变址寻址方式允许加上的偏移量不是固定的,而是由指令中提供的。

这种方式适合迭代访问数组等数据结构。

指令系统CISC复杂指令集计算机(CISC)是一种指令系统,其指令集包含了丰富的功能,一条指令可以完成多种操作。

CISC指令集通常包含复杂的寻址方式和复杂的指令格式,适合处理复杂的任务。

RISC精简指令集计算机(RISC)是另一种指令系统,其每条指令只执行一项操作,指令集更加简单明了。

RISC指令集通常使用固定长度的指令格式,寻址方式也相对较简单,适合处理简单快速的任务。

SIMD单指令多数据流(SIMD)是一种并行计算技术,其指令系统中一条指令可以同时处理多个数据元素。

SIMD适用于需要大量相同计算的任务,例如图像处理和数字信号处理。

VLIW超长指令字(VLIW)是一种指令系统,其一条指令包含多个操作,由硬件解析并同时执行。

VLIW通常需要编译器生成多个操作的组合,并且对硬件要求较高。

七种寻址方式

七种寻址方式

七种寻址方式标签:it一、立即寻址方式操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。

立即数可以是8位、16位或32位,该数值紧跟在操作码之后。

如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。

例如:MOV AH, 80H ADD AX, 1234H MOV ECX, 123456HMOV B1, 12H MOV W1, 3456H ADD D1, 32123456H其中:B1、W1和D1分别是字节、字和双字单元。

以上指令中的第二操作数都是立即数,在汇编语言中,规定:立即数不能作为指令中的第二操作数。

该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。

立即数寻址方式通常用于对通用寄存器或内存单元赋初值。

图是指令“MOV AX, 4576H”存储形式和执行示意图。

二、寄存器寻址方式指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。

把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。

指令中可以引用的寄存器及其符号名称如下:8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。

寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。

1、源操作数是寄存器寻址方式如:ADD VARD, EAX ADD VARW, AX MOV VARB, BH等。

其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。

在第4章将会学到如何定义它们。

2、目的操作数是寄存器寻址方式如:ADD BH, 78h ADD AX, 1234h MOV EBX, 12345678H等。

3、源和目的操作数都是寄存器寻址方式如:MOV EAX, EBX MOV AX, BX MOV DH, BL等。

实验5_寻址方式在结构化数据访问中的应用

实验5_寻址方式在结构化数据访问中的应用

实验5 寻址方式在结构化数据访问中的应用【实验名称】寻址方式在结构化数据访问中的应用【实验目的】1.掌握BX,BP,SI,DI的寄存器寻址方式,以及寻址方式在结构化数据访问中的应用;2.掌握指令数据长度指定的操作word ptr 和byte ptr;3.掌握dd,db,dw四种定义数据长度的方式4.掌握dup操作符5.掌握DIV指令【实验原理及知识点】1.BX, BP, SI, DI寄存器的寻址方式8086CPU中,只有4个寄存器BX,BP,SI,DI可以用来在[…]中进行内存单元的寻址,如:MOV BX, [BX]MOV AX, [SI]MOV AX, [BX+SI+idata]; idata表示常量用这四个寄存器及它们的组合寻址,要注意的是,BX与BP不能同时出现在[…]中,SI 和DI也不能同时出现在[…]中,即只能有以下四种组合:BX和SI;BX和DI,BP和SI,BP和DIBP为基址寄存器,只要出现了BP,则默认为与SS段寄存器指定的段内。

BP一般与SS 共同使用,用来在栈内寻址BX,SI,DI默认为DS段寄存器指定的段内2.指令中,操作数如有内存单元,则操作的内存数据的长度可由以下三种方式指定(1)指令中,操作数如有寄存器,则根据寄存器的长度指定(2)指令中,操作数如都为内存单元,而无寄存器,则需要显示地指定数据的长度,显示指定的方式如下:指定为字长度:word ptr指定为字节长度: byte ptr(3)有些指令中,如操作数为内存单元,但不需要指定操作数据长度,因为这些指令有默认的数据长度,如push和pop只进行字的操作3.定义数据长度的操作符db:define byte,定义字节长度,1个字节dw:define word,定义字长度,2个字节dd:define double word,定义双字长度,4字节4.DUP操作符与db, dw, dd操作符配合使用,用来进行数据的重复,语法格式如下:db 3 dup (0); 定义3个字节,内容为0,0,0dw 3 dup (1,2,3); 定义9个字,18个字节,内容为1,2,3,1,2,3,1,2,3dd 1 dup (‘a’); 定义4个字节,内容为’a’5.DIV指令DIV指令为除法指令。

寻址方式在结构化数据访问中的应用设计思路

寻址方式在结构化数据访问中的应用设计思路

寻址方式在结构化数据访问中的应用设计思路导言在结构化数据访问中,寻址方式是一个关键的设计思路。

通过选择合适的寻址方式,可以提高数据的访问效率,优化查询性能,并且更好地满足业务需求。

本文将深入探讨寻址方式在结构化数据访问中的应用设计思路,并提供一些应用场景和案例分析。

什么是寻址方式在结构化数据访问中,寻址方式是指通过指定数据的位置或特定的标识来唯一地定位数据的方法。

常见的寻址方式包括物理寻址和逻辑寻址。

物理寻址是通过指定数据所在的存储地址来访问数据,而逻辑寻址则是通过指定数据的逻辑标识(如键值)来访问数据。

物理寻址的应用设计思路物理寻址的优势在于直接通过存储地址来访问数据,速度快,灵活性高。

在设计物理寻址的应用时,需要考虑以下几个因素:存储布局存储布局是指如何将数据存储在物理存储介质中。

常见的存储布局方式有顺序存储、散列存储和树形存储等。

选择合适的存储布局方式可以提高数据的访问效率。

索引设计索引是物理寻址的一种常见方式,在访问大规模数据时尤为重要。

通过建立索引可以快速定位数据的存储地址,减少数据访问的时间复杂度。

常见的索引结构有B树、B+树、哈希索引等。

分区设计分区是指将数据划分为多个区域进行存储。

通过分区,可以提高数据的并发访问能力,并且在数据量增加时可以扩展存储容量和访问能力。

常见的分区方式有水平分区和垂直分区等。

逻辑寻址的应用设计思路逻辑寻址的优势在于可以通过逻辑标识来访问数据,方便理解和使用。

在设计逻辑寻址的应用时,需要考虑以下几个因素:数据模型设计合理的数据模型设计是逻辑寻址的前提,可以通过定义实体、关系和属性来描述数据的结构和关联。

常见的数据模型有层次模型、网络模型和关系模型等。

查询优化查询优化是指通过合理的查询计划和索引设计来提高查询性能。

在设计逻辑寻址的应用时,需要考虑如何通过优化查询方式和查询条件,以及合理地选择索引进行查询优化。

缓存机制缓存机制是逻辑寻址的一种常见应用场景,在访问频繁的数据上设置缓存可以提高数据的访问速度。

实验3寻址方式在结构化数据访问中的应用

实验3寻址方式在结构化数据访问中的应用

实验3 寻址方式在结构化数据访问中的应用班级:计科-12-2 姓名:谭广鹏学号: 201203011177上机时间: 5.5 上机地点:二机房指导老师:尉秀梅一.实验目的:1.掌握各种不同的寻址方式在结构化数据访问中的应用。

2.熟练分析结构化数据。

二.实验内容:寻址方式在结构化数据访问中的应用(172页)三.实验步骤assume ds:data, es:table, cs:code, ss:stackdata segmentdb '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, 197514dd 345980, 590827, 803530, 1183000, 1843000, 2759000, 3753000, 4649000, 5937000dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226 dw 11542, 14430, 15257, 17800data endstable segmentdb 21 dup ('year summ ne ?? ')table endsstack segmentdw 2 dup(0)stack endscode segmentstart:mov ax, datamov ds, ax; 设置table段mov ax, tablemov es, ax; 设置堆栈段mov ax, stackmov ss, axmov sp, 16mov bx, 0mov si, 0mov di, 0; 准备复制,需要用到循环,21次mov cx, 21s:mov ax, ds:[bx+0]mov es:[si+0], axmov ax, ds:[bx+2]mov es:[si+2], axmov al, 32mov es:[si+4], almov ax, ds:[bx+84]mov es:[si+5], axmov ax, ds:[bx+86]mov es:[si+7], axmov al, 32mov es:[si+9], almov ax, ds:[di+168]mov es:[si+0ah], axmov al, 32mov es:[si+0ch], almov ax, ds:[bx+84]mov dx, ds:[bx+86]push cxmov cx, ds:[di+168]div word ptr cxpop cxmov es:[si+0dh], axmov al, 32mov es:[si+0fh], aladd si, 16add bx, 4add di, 2loop smov ax,4c00hint 21hcode endsend start。

实验七-寻址方式在结构化数据访问

实验七-寻址方式在结构化数据访问
实验七-寻址方式在结构化数据访问中的应用

这个程序是到目前为止我们遇到的最复杂的程 序,它几乎用到了我们之前学过的所有知识和 编程技巧。
这个程序是对我们目前能力的一个考验,请一 定要认真完成,务必弄明白才继续往下学习。

我们要考虑几个问题

原数据在哪里 ?(DS) 年份(0-53H)、收入(54H-0A7H)、雇员 的存放位置(0A8H-0D1H)
每次循环要执行的任务

存放年份
存放公司总收入 存放公司人数 计算人均收入并存放



存放年份

mov mov mov mov mov mov mov mov
al, [bx] es:[di], al al, [bx+1] es:[di+1], al al, [bx+2] es:[di+2], al al, [bx+3] es:[di+3], al

mov ax,54h[bx]
mov dx,56h[bx];这两句是初始化被除数 div word ptr ds:0A8h [si] ;除以人数 mov es:0dh[di],ax ;将商放入指定位置
为下一次循环时存放数据做准备
add bx,4
add si,2 add di, ax,54h[bx] ;第一个“年收入”的段基址为 54H mov dx,56h[bx] mov es:5h[di],ax mov es:7h[di],dx
存放公司人数
mov ax,0A8h[si] ;第一个“人数”的段基址为 0A8H mov es:0AH[di],ax
计算人均收入并存放
目标存放位用什么来表示(ES) 年份、收入、雇员、平均收入的存放位置 观察数据类型和如何利用偏移寻址

单片机指令的寻址方式及其应用

单片机指令的寻址方式及其应用

单片机指令的寻址方式及其应用在单片机程序设计中,寻址方式是指用于访问或者定位内存中数据或指令的方法。

单片机指令的寻址方式有多种,包括直接寻址、间接寻址、寄存器寻址、立即寻址等。

不同的寻址方式适用于不同的情况和需求,在实际应用中起到重要的作用。

一、直接寻址直接寻址是最简单和最常见的寻址方式之一。

在直接寻址中,指令中包含的是操作数的直接地址。

当单片机执行该指令时,直接从内存中取出该地址对应的数据或指令进行操作或执行。

直接寻址适用于需要直接操作内存数据的场景,通过指定地址可以直接读取或写入数据。

例如,假设有一条指令LOAD A, 0x10,表示将内存地址为0x10的数据加载到寄存器A中。

单片机在执行该指令时,会直接从内存的0x10地址中读取数据并将其存入寄存器A中。

直接寻址的优点是操作简单、直观,缺点是地址空间有限,不能处理较大范围的数据。

二、间接寻址间接寻址是通过指令中给出的地址,再根据该地址所指向的存储单元获取数据或指令。

间接寻址适用于需要通过指针或者索引来访问数据的场景。

例如,假设有一条指令LOAD A, [0x10],表示将从内存地址0x10所指向的地址中读取数据,并将其存入寄存器A中。

在执行该指令时,单片机会首先读取0x10地址中存储的数据,得到实际的数据地址,然后再根据该地址从内存中读取数据。

间接寻址的优点是灵活性高,可以通过间接地址来访问复杂的数据结构,但是需要多次访存,运行效率较低。

三、寄存器寻址寄存器寻址是指指令中直接使用寄存器作为操作数的寻址方式。

在寄存器寻址中,指令中给出的操作数就是寄存器中的值,可以直接对其进行操作。

例如,有一条指令ADD A, B,表示将寄存器A中的值与寄存器B中的值相加,并将结果存入寄存器A中。

寄存器寻址的优点是非常快速,因为数据直接存储在寄存器中,不需要额外的访存操作。

但是由于寄存器数量有限,只适用于数据量较小的情况。

四、立即寻址立即寻址是指指令中直接给出操作数的值的寻址方式。

实验7 寻址方式在结构化数据访问中的应用

实验7  寻址方式在结构化数据访问中的应用

计算机学院实验报告课程汇编语言实验名称实验7 寻址方式在结构化数据访问中的应用专业计算机科学与技术2018年 12 月 24 日一、实验目的1.定位内存单元的寻址方式汇总2.寻址方式的综合应用3.转移指令的分类和原理4.熟悉在显存中编程的方法二、实验内容及要求( 一) 寻址方式的汇总及综合应用1.定位内存单元的寻址方式有几种,并举例说明。

2.寻址方式在结构化数据访问中的应用。

Power idea 公司从 1975 年成立一直到 1995 年的基本情况如下。

年份收入 ( 千美元 )雇员人均收入 ( 千美元 ) 1975163?1976227? 19773829? 1978135613? 1979239028? 1980800038? 1995593700017800?下面的程序中,已经定义好了这些数据:assume cs:codesgdata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995';年份dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd345980,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,8226dw 11542,14430,15257,17800;公司雇员人数data endstable segmentdb 21 dup('year summ ne ??')table ends编程,将 data 段中的数据按如下格式写入到人均收入 ( 取整 ) ,结果也按照下面的格式保存在table table段中,并计算21 年中的人均收入,结果也按照下面格式保存在table段中。

寻址方式与数据传送

寻址方式与数据传送

数据传送的未来发展
数据传送将更加高速化
随着5G、6G等新一代通信技术的不断发展,数据传送速度将得到 大幅提升,满足用户对高速数据传输的需求。
数据传送将更加安全可靠
随着网络安全技术的不断发展,数据传送将更加安全可靠,保障用 户数据的安全性和隐私性。
数据传送将更加智能化
随着人工智能技术的不断发展,数据传送将更加智能化,能够根据 用户的需求和习惯进行智能推荐和个性化服务。
间接寻址
操作数的有效地址通过寄存器间接给出,如指令"MOV AX, [BX]"。优点是灵活性较高,缺点是增加了指令长度 。
变址寻址
操作数是变址寄存器的值加上位移量,如指令"MOV AX, [BX+DI-2]"。优点是可实现数组元素的动态修改,缺点 是计算有效地址较复杂。
数据传送的比较
数据传送不通过专门的传送指令实现,而是在其他指 令中隐含着数据传送操作,如加减乘除指令等。优点
是简化了指令系统,缺点是灵活性较差。
输入 标题
立即传送
数据被直接包含在指令中,如指令"MOV AX, 100"。 优点是简单直观,缺点是灵活性较差。
隐式传送
寄存器传送
数据被存放在内存单元中,通过内存单元间接传送, 如指令"MOV AX, [BX]"。优点是可实现大容量数据 传送,缺点是速度较慢。
内存传送
直接寻址
指令直接给出操作数的有效地 址,如:MOV AX, [BX]
基址寻址
操作数的有效地址由基址寄存 器和位移量给出,如:MOV AX, [BX+SI]
相对寻址
操作数的有效地址是程序计数 器的值,如:MOV AX, [BX+PC]

数据通信网络的认知与应用 寻址

数据通信网络的认知与应用 寻址
设备建立起联系 的一种总线操作。通常有以下三种寻址方式: 1.物理寻址 用于选择某一总线段上某一特定位置的 从设备作为响应者。由于大多数从设备都包含有多 个寄存器,因此物理寻址常常有辅助寻址,以选择 响应者的特定寄存器或某一功能。 2.逻辑寻址 用于指定存储单元的某一个通用区,而 并不顾及这些存储单元在设备中的物理分布。某一 设备监测到总线上的地址信号,看其是否与分配给 它的逻辑地址相符,如果相符,它就成为响应者。 物理寻址与逻辑寻址的区别在于前者是选择与位置 有关的设备,而后者是选择与位置无关的设备。 3.广播寻址 广播寻址用于选择多个响应者。命令者 把地址信息放在总线上,从设备将总线上的地址信 息与其内部的有效地址进行比较,如果相符,则该 从设备被“连上”(connect)。能使多个从设备连 上的地址称为“广播地址”(broadcast addresses)。 命令者为了确保所选的全部从设备都能响应,系统 需要有适应这种操作的定时机构。

汇编:寻址方式在结构化数据访问中的应用

汇编:寻址方式在结构化数据访问中的应用

汇编:寻址⽅式在结构化数据访问中的应⽤要求将 data 段中的数据按如下格式写⼊到 table 段中,并计算 21 年中的⼈均收⼊(取整),结果也按照下⾯的格式保存在 table 段中。

注 1:实验中需要进⾏ 21 次类似操作,故需要使⽤ Loop 指令来实现循环结构,循环次数默认存放在 cx 寄存器中。

例如,要计算 2 的20 次⽅,其具体格式如下:mov ax, 2mov cx, 19s: add ax,axloop s注 2:计算⼈均收⼊需要使⽤ div 指令。

Div 指令格式如下:Div 寄存器/内存单元(除数的存放地址)被除数默认存放在 AX(或 DX 和 AX)中。

如果除数为 16 位,被除数为 32 位,则被除数存放在 DX 和 AX 中,其中 DX 存放⾼ 16位,AX 存放低 16 位。

同时 AX 存放除法操作的商,DX 存放除法操作的余数。

例如:div word ptr ES:[0]需要注意的是,在对内存单元的访问中,使⽤ word ptr(属性修改运算符 PTR)来指明访问的内存单元是字单元。

若使⽤ byte ptr,则说明访问的是字节单元。

源代码assume cs:code, es:table, ds:datadata segment ;dsdb '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,140317,197514dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000;以上表⽰21 年公司总收⼊的21个dword型数据dw 3,7,10,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dw 11542,14430,15257,17800;以上是表⽰21年公司雇员⼈数的21个word型数据data endstable segment ;esdb 21 dup ('year summ ne ?? ')table endscode segmentmain:;前期准备:地址存⼊段寄存器 ds(data), es(table)mov ax, datamov ds, axmov ax, tablemov es, ax;填⼊年份mov bx, 0 ;table寻址(table中年份相对于 es 的偏移mov si, 0 ;data 寻址(data中年份相对于 ds 的偏移mov cx, 21 ;循环21次r1:mov al, [si][0] ;data中年份的最⾼位填⼊ tablemov es:[bx][0], almov al, [si][1]mov es:[bx][1], almov al, [si][2]mov es:[bx][2], almov al, [si][3]mov es:[bx][3], aladd si, 4add bx, 16loop r1;填⼊总收⼊mov bx, 5 ;table寻址(table中总收⼊相对于 es 的偏移 mov si, 54h ;data寻址(data中总收⼊相对于 ds 的偏移 mov cx, 21 ;循环21次r2:mov al, [0][si] ;data中总收⼊的最⾼位填⼊ tablemov es:[bx][0], almov al, [1][si]mov es:[bx][1], almov al, [2][si]mov es:[bx][2], almov al, [3][si]mov es:[bx][3], aladd si, 4add bx, 16loop r2;填⼊⼈数mov bx, 10 ;table寻址(table中⼈数相对于 es 的偏移 mov si, 0a8h ;data寻址(data中⼈数相对于 ds 的偏移 mov cx, 21 ;循环21次r3:mov al, [0][si] ;data中⼈数的⾼位填⼊ tablemov es:[bx][0], almov al, [1][si]mov es:[bx][1], aladd si, 2add bx, 16loop r3;计算并填⼊平均收⼊mov bx, 5 ;table寻址(table中总收⼊相对于 es 的偏移 mov cx, 21 ;循环21次r4:mov ax, es:[bx][0]mov dx, es:[bx][2];寄存器记录总收⼊div word ptr es:[bx][5] ;总收⼊ / ⼈数mov es:[bx][8], ax ;商填⼊ tableadd bx, 16loop r4;mov dx, ds:bx;计算并填⼊⼈均收⼊mov ah, 4ch ;退出程序int 21hcode endsend main结果。

寻址方式

寻址方式

寻址方式计算机执行程序时,根据指令给出的寻址方式,计算出操作数的地址,然后从该地址中取出操作数进行指令的操作,或者把操作结果送入某一操作数地址中去。

完善的寻址方式可为用户组织和使用数据提供方便。

寻址方式的选择首先要考虑与数的表示相配合,能方便地存取各种数据; 其次,要仔细分析指令系统及各种寻址方式的可能性,比较它们的特点并进行选择; 此外,还应考虑实现上的有效性和可能性,选择时还应考虑地址码尽可能短、存取的空间尽可能大、使用方便等等。

寻址方式分为“数据寻址方式”和“转移地址寻址方式”两种类型。

虽然后者是指在程序非顺序执行时如何寻找转移地址的问题,但在方法上与前者并无本质区别,因此也将其归入寻址方式的范畴。

另外,在下文的讨论中,为了说明问题的方便,我们均以数据传送指令中的MOV指令为例进行说明,并按汇编指令格式的规定,称指令中两个操作数左边的一个为“目的操作数”,右边的一个为“源操作数”。

一般格式为: “MOV目的操作数,源操作数”,指令的功能是将源操作数的内容传送至目的操作数。

1.数据寻址方式1.立即寻址指令中直接给出操作数,操作数紧跟在操作码之后,作为指令的一部分存放在代码段中,这种寻址方式称为立即寻址(Immediate Addressing)。

这样的操作数称为立即数,立即数可以是8位、16位或32位。

如果是16位或32位的多字节立即数,则高位字节存放在高地址中,低位字节存放在低地址中。

立即寻址方式常用来给寄存器赋初值,并且只能用于源操作数,不能用于目的操作数。

由于操作数可以直接从指令中获得,不需要额外的存储器访问,所以采用这种寻址方式的指令执行速度很快,但它需占用较多的指令字节。

例子如下:MOV AL,12H该指令中源操作数的寻址方式为立即寻址,指令执行后,AL=12H,立即数12H送入AL 寄存器。

例1-1指令例子如下:MOV AX,3456H该指令中源操作数的寻址方式也为立即寻址,指令执行后,AX=3456H,立即数3456H 送入AX寄存器。

七种寻址方式定义

七种寻址方式定义

七种寻址方式定义1. 直接寻址(Direct Addressing)直接寻址是一种最简单的寻址方式,它通过使用一个固定的地址来引用存储器中的数据。

在直接寻址中,程序员可以直接指定要访问的内存地址,使得数据能够被快速地检索和处理。

优点: - 简单直观,易于理解和实现。

- 访问速度快,因为没有额外的计算操作。

缺点: - 空间浪费:由于每个变量都需要分配一个独立的内存地址,可能会导致内存空间的浪费。

- 灵活性差:无法动态地分配和管理内存。

2. 间接寻址(Indirect Addressing)间接寻址是一种通过使用指针来间接访问数据的寻址方式。

在间接寻址中,指针包含了要访问的数据的地址,程序员通过操作指针来获取或修改这些数据。

优点: - 灵活性高:可以动态地分配和管理内存。

- 节省空间:多个变量可以共享同一个指针,减少了内存占用。

缺点: - 访问速度相对较慢:由于需要额外的指针操作,访问数据比直接寻址要慢一些。

3. 寄存器寻址(Register Addressing)寄存器寻址是一种通过使用CPU内部的寄存器来访问数据的寻址方式。

在寄存器寻址中,操作数直接存储在CPU的寄存器中,而不是通过内存地址来获取。

优点: - 访问速度极快:由于数据直接存储在CPU的寄存器中,不需要额外的内存访问操作。

- 节省空间:不占用内存空间。

缺点: - 寄存器数量有限:由于现代计算机中可用的寄存器数量有限,可能无法满足大量数据的需求。

- 可移植性差:不同的计算机架构可能具有不同数量和类型的寄存器。

4. 立即寻址(Immediate Addressing)立即寻址是一种通过使用指令本身或指令后面紧跟着的常量值来访问数据的寻址方式。

在立即寻址中,操作数直接包含在指令中,而不需要额外的地址信息。

优点: - 简单直观:操作数直接包含在指令中,易于理解和实现。

- 节省空间:不需要额外的地址信息。

缺点: - 数据大小受限:由于操作数直接包含在指令中,所以通常只能表示较小的常量值。

寻址方案范文

寻址方案范文

寻址方案1. 什么是寻址方案在计算机科学中,寻址方案是指计算机系统中用来确定内存地址的方法和机制。

计算机系统中的各种硬件和软件组件需要通过内存地址来访问和存储数据,因此寻址方案的设计和实现对于计算机系统的性能和功能至关重要。

2. 寻址方案的分类根据寻址的方式和策略,寻址方案可以分为以下几种常见的分类:2.1 直接寻址直接寻址是寻址方案中最简单和最常见的一种形式。

在直接寻址中,内存地址的计算直接通过指定的寻址操作数来完成,无需进行额外的计算和转换。

以 x86 架构为例,使用直接寻址时,可以通过以下方式访问内存中的数据:mov eax, [ecx] ; 将 ecx 指向的内存地址中的值保存到 eax 寄存器中2.2 基址寻址基址寻址是寻址方案中常见的一种形式,它允许通过指定一个基址和一个偏移量来计算内存地址。

基址寻址常用于数组和数据结构的访问中。

mov eax, [ebx+ecx] ; 将 ebx+ecx 指向的内存地址中的值保存到 eax 寄存器中2.3 变址寻址变址寻址是寻址方案中常见的一种形式,它通过使用一个寄存器或内存单元的值与一个指定的偏移量相加或相减来计算内存地址。

变址寻址常用于循环和字符串操作中。

mov eax, [ecx+edx*4] ; 将 ecx+edx*4 指向的内存地址中的值保存到 eax寄存器中2.4 隐式寻址隐式寻址是寻址方案中最简单和最直接的一种形式,它将操作数直接编码在指令中,无需进行额外的计算和转换。

隐式寻址常用于一些特定的指令和操作。

push eax ; 将 eax 寄存器的值压入栈中2.5 间接寻址间接寻址是寻址方案中一种灵活且强大的形式,它通过使用一个寄存器或内存单元中保存的地址作为访问内存的依据。

间接寻址常用于函数调用和数据结构的访问中。

mov eax, [ebx] ; 将 ebx 指向的内存地址中的值保存到 eax 寄存器中3. 寻址方案的选择在选择寻址方案时,需要根据具体的需求和系统的特点进行评估和比较。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机学院实验报告课程汇编语言实验名称实验7 寻址方式在结构化数据访问中的应用专业计算机科学与技术2018年 12 月 24 日一、实验目的1.定位内存单元的寻址方式汇总2.寻址方式的综合应用3.转移指令的分类和原理4.熟悉在显存中编程的方法二、实验内容及要求( 一) 寻址方式的汇总及综合应用1.定位内存单元的寻址方式有几种,并举例说明。

2.寻址方式在结构化数据访问中的应用。

Power idea 公司从 1975 年成立一直到 1995 年的基本情况如下。

年份收入 ( 千美元 )雇员人均收入 ( 千美元 ) 1975163?1976227? 19773829? 1978135613? 1979239028? 1980800038? 1995593700017800?下面的程序中,已经定义好了这些数据:assume cs:codesgdata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995';年份dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd345980,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,8226dw 11542,14430,15257,17800;公司雇员人数data endstable segmentdb 21 dup('year summ ne ??')table ends编程,将 data 段中的数据按如下格式写入到人均收入 ( 取整 ) ,结果也按照下面的格式保存在table table段中,并计算21 年中的人均收入,结果也按照下面格式保存在table段中。

1 年地址占 1 行,0 1 2 3 4 5 6 7 8 9 A BC DE F每行的起始地址table:0‘1975’163? table:10H‘1976’227? table:20H‘1977’3829? table:30H‘1978’135613? table:40H‘1979’239028? table:50H‘1980’800038?Mtable:140H‘1995’593700017800?提示 : 可将 data 段中的数据看成是多个数组,而将 table 中的数据看成是一个结构型数据的数组,每个结构型数据中包含多个数据项,可用bx 定位每个结构型数据,用 idata 定位数据项,用 si 定位数组项中每个元素,对于 table 中的数据的访问可采用 [bx].idata和[bx].idata[si]的寻址方式。

注意,这个程序是目前为止最复杂的程序,它机会用到了我们以前学过的所有知识和编程技巧。

所以,这个程序是对我们从前学习的最好的实践总结。

三、实验解答过程及结果( 一) 寻址方式的汇总及综合应用1.定位内存单元的寻址方式有 5 种, 如下:(1)[idata]例: mov ax,[5] (ax)=((ds)*16+5)(2)[bx]例: mov ax,[bx] (ax)=((ds)*16+(bx))(3)[bx+idata]例: mov ax,[bx+5] (ax)=((ds)*16+(bx)+5)(4)[bx+si]或[bx+di]例: mov ax,[bx+si] (ax)=((ds)*16+(bx)+(si))(5)[bx+si+idata]或[bx+di+idata]例: mov ax,[bx+si+5] (ax)=((ds)*16+(bx)+(si)+5)2.寻址方式在结构化数据访问中的应用(1) 给出该设计过程或算法该题目地址的变化是有规律的,我们可以知道,程序运行完的table 段一共有21行,分别存放 21 年的数据,每行有 16 个字节,正好放满所有内容。

所以采用loop 循环 21 次,每次都在 table 段的对应行存放”年份( 4 字节) +空格 + 收入( 4 字节) +空格 +雇员数( 2 字节) +空格 +人均收入( 2 字节) +空格”形式的数据。

这里的数据我放在 es:[si+idata] 里, si 最初为 0,每次循环 +16 (即一行)。

而从 data 段的数据可以看出,第一块年数据地址之间相隔4,第二块收入数据地址之间相隔也是4,第三块雇员数据地址之间相隔2。

第一块数据和第二块数据地址之间相隔4*21=84(因为一个年数据占了4个字节),第二块数据和第三块数据地址之间也是相隔8 4(收入是 dword 数据)。

年数据用 ds:[bx]定位,收入数据用ds:[bx+84] 定位,bx 最初为0,每次循环bx+4(即跳到下个相应数据)。

雇员数用 ds:[di+168] 定位, di 最初为 0,每次循环 di+2 。

代码如下:assume cs:code,ds:data,ss:stackdata segmentdb '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,197514dd 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,8226dw 11542,14430,15257,17800;以上是表示21年公司雇员人数的21个word型数据data endstable segmentdb 21 dup ('year summ ne ?? ')table endsstack segment stackdb 128 dup(0)stack endscode segmentstart: mov ax,stackmov ss,axmov sp,128mov ax,datamov ds,ax ;设置数据从哪儿来mov ax,tablemov es,ax ;设置数据到哪儿去mov si,0 ;ds:[si] si=0 年份开始的偏移地址mov di,84 ;ds:[di] di=84 公司总收入开始的偏移地址mov bx,168 ;ds:[bx] bx=168 公司雇员人数开始的偏移地址mov bp,0 ;es:[bp] bp=0 数据存到table中的开始的偏移地址mov cx,21 ;循环21次inputTable: push ds:[si] ;把年份放到table的 year中用栈转移更简单pop es:[bp]push ds:[si+2]pop es:[bp+2]mov ax,ds:[di] ;把公司总收入放到table的 summ中因需算人均收入,故不使用栈mov dx,ds:[di+2] ;dd型占2个字,即4个字节mov es:[bp+5],ax ;bp+5 对应 sumov es:[bp+7],dx ;bp+7 对应 mmpush ds:[bx] ;把雇员人数放到table的 ne中pop es:[bp+0AH]div word ptr ds:[bx]mov es:[bp+0DH],ax ;把人均收入放到talbe的 ??中;0123456789ABCDE; db 21 dup ('year summ ne ?? ')add si,4 ;年份占4个字节add di,4 ;总收入占4个字节add bx,2 ;雇员人数占2个字节add bp,16 ;放入table中每一年换一行loop inputTablemov ax,4c00Hint 21Hcode endsend start(3)Table段中原始数据与最终结果比对。

前后对比如图:四、实验总结通过这次实验,我学会了寻址方式的多种形式以及他们的综合应用,还有转移指令的原理和各种用法。

在实验的过程中,我学会了编写一些复杂的程序,学会了判断程序的运行结果,懂得了更多的汇编知识,在汇编语言的学习上又有了新的进步。

相关文档
最新文档