实验三 汇编数据寻址的方法

合集下载

北京理工大学汇编语言实验报告实验三字符串操作实验

北京理工大学汇编语言实验报告实验三字符串操作实验

北京理工大学汇编语言实验报告实验三字符串操作实验实验三字符串操作实验一、实验目的1)熟悉串操作指令的功能与应用;2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序;3)了解汇编语言字符串处理基本流程;二、实验软硬件环境1)硬件环境:惠普64位一体化计算机及局域网; 2)软件环境:windows 8,红蜘蛛管理系统,MASM for Win dows三、实验相关知识1)字符串操作流程SI寄存器保存源串首地址;DI寄存器保存目的串首地址;CX寄存器保存字符串长度;CLD或STD指令设置字符串处理方向;2)重复前缀指令重复次数由计数寄存器CX中存放的值决定,指令每重复执行一次,计数器CX中值减1,当CX 中值减至0时,停止重复执行,继续执行下一条指令。

寄存器的E内容条件为复前罡重复与操作直配合工作的字符串处理指令有MOVSSTOS^ LODS当REPE/REP判断计数寄存器的内容CX是否为0或ZF=O(即比较的两个操作数不等)亠只要满足一个则重复执行结束,否则继续执行。

可以与REPE/REP配合工作的串指令有CMP和SCAS0或體茴比较P判个操数数相等的内容要满足一个则重复执行结束,否则继续执行。

可以与REPE/REP配合工作的串指令有CMPS口SCAS3)字符串操作指令lodsb、lodsw :把DS:SI 指向的存储单元中的数据装入AL或AX然后根据DF标志增减SI ;stosb、stosw :把AL 或AX 中的数据装入ES:DI指向的存储单元,然后根据DF标志增减DI ;movsb movsw把DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF 标志分别增减SI和DI ;scasb、scasw:把AL或AX中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI ;cmpsb cmpsw把DS:SI指向的存储单元中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI ;rep :重复其后的串操作指令。

汇编 od找基址方法

汇编 od找基址方法

汇编od找基址方法
你好,这篇文章我尽量用四川方言、陕西方言和北京方言结合的方式来写,紧扣“汇编OD找基址方法”这个主题。

咱们先说说这汇编OD找基址的方法。

说白了啊,这就是个技术活,得靠
咱们这些搞技术的哥们儿来搞。

四川话来说,就是要“摸清楚”这个基址到底在哪儿。

陕西方言里,这就叫“寻摸”个东西出来。

首先啊,你得有个OD(OllyDbg)这样的反汇编工具,这就好比咱们手里
的放大镜,得靠它来看清楚代码的“庐山真面目”。

然后啊,你就得开始“扫描”这个程序的内存空间了,北京话讲就是“翻箱倒柜”地找。

在OD里,你可以设置一些条件来过滤出你感兴趣的部分,这就好比咱们
在菜市场里挑菜,只挑自己喜欢的。

然后啊,你就得开始“分析”这些代码了,看看它们都在干啥,哪些可能是我们要找的基址。

找基址这个过程啊,得有耐心,也得有经验。

有时候你可能得反复试错,才能找到正确的基址。

这就像咱们小时候玩捉迷藏,得反复试探,才能找到藏身的小伙伴。

不过啊,一旦你找到了基址,那就啥都好说了。

你就可以“操控”这个程序了,想让它干啥就干啥。

这就好比咱们掌握了遥控器的密码,想看啥节目就看啥节目。

所以说啊,汇编OD找基址这个方法,虽然听起来复杂,但只要你掌握了
技巧,就不难了。

四川话讲就是“熟能生巧”,陕西方言里叫“练出来的”,北京话就是“多练练就会了”。

好了,今天就跟大家聊到这儿,希望这篇文章能帮到你。

如果你还有其他
问题,随时问我啊!。

汇编语言--操作数的寻址方式(三)

汇编语言--操作数的寻址方式(三)

汇编语⾔--操作数的寻址⽅式(三)三、操作数的寻址⽅式操作数是指令或程序的主要处理对象。

如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。

在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,⼤量的指令在执⾏过程中都会涉及到操作数。

所以,在指令中如何表达操作数或操作数所在位置就是正确运⽤汇编指令的⼀个重要因素。

在指令中,指定操作数或操作数存放位置的⽅法称为寻址⽅式。

操作数的各种寻址⽅式是⽤汇编语⾔进⾏程序设计的基础,也是本课程学习的重点之⼀。

微机系统有七种基本的寻址⽅式:⽴即寻址⽅式、寄存器寻址⽅式、直接寻址⽅式、寄存器间接寻址⽅式、寄存器相对寻址⽅式、基址加变址寻址⽅式、相对基址加变址寻址⽅式等。

其中,后五种寻址⽅式是确定内存单元有效地址的五种不同的计算⽅法,⽤它们可⽅便地实现对数组元素的访问。

另外,在32位微机系统中,为了扩⼤对存储单元的寻址能⼒,增加了⼀种新的寻址⽅式——32位地址的寻址⽅式。

为了表达⽅便,我们⽤符号“(X)”表⽰X的值,如:(AX)表⽰寄存器AX的值。

1、⽴即寻址⽅式操作数作为指令的⼀部分⽽直接写在指令中,这种操作数称为⽴即数,这种寻址⽅式也就称为⽴即数寻址⽅式。

⽴即数可以是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分别是字节、字和双字单元。

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

该规定与⾼级语⾔中“赋值语句的左边不能是常量”的规定相⼀致。

⽴即数寻址⽅式通常⽤于对通⽤寄存器或内存单元赋初值。

图3.1是指令“MOV AX, 4576H”存储形式和执⾏⽰意图。

汇编语言第3章 指令系统和寻址方式

汇编语言第3章 指令系统和寻址方式

5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)

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

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

武汉工程大学电气信息学院《面向对象程序设计》实验报告[ 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实验总结(说明:总结实验认识、过程、效果、问题、收获、体会、意见和建议。

汇编的寻址方式

汇编的寻址方式

在汇编语言中,寻址方式指的是指令如何访问内存中的操作数或数据。

不同的处理器体系结构支持不同的寻址方式。

以下是一些常见的寻址方式:立即寻址(Immediate Addressing):操作数直接包含在指令中。

例如:MOV AX, 5 ; 将寄存器AX 设置为立即数5寄存器寻址(Register Addressing):操作数位于寄存器中。

例如:MOV AX, BX ; 将寄存器BX 的值移动到寄存器AX直接寻址(Direct Addressing):操作数的地址直接指定在指令中。

例如:MOV AX, [1234] ; 将内存地址1234 处的数据移动到寄存器AX寄存器间接寻址(Register Indirect Addressing):指令中包含一个寄存器,该寄存器包含操作数的地址。

例如:MOV AX, [BX] ; 将寄存器BX 中存储的地址处的数据移动到寄存器AX基址寻址(Base Addressing):使用基址寄存器加上一个偏移量来计算内存地址。

例如:MOV AX, [BX + 10] ; 将寄存器BX 加上偏移量10 后的地址处的数据移动到寄存器AX相对寻址(Relative Addressing):操作数的地址是相对于当前指令位置的偏移量。

例如:JMP label_name ; 无条件跳转到标签label_name 处变址寻址(Indexed Addressing):使用一个寄存器的值作为基址,另一个寄存器的值作为偏移量。

例如:MOV AX, [SI + DI] ; 将寄存器SI 和DI 中的值相加,然后将结果作为地址处的数据移动到寄存器AX相对基址寻址(Relative Base Addressing):使用基址寄存器和相对偏移量的组合。

例如:MOV AX, [BX + 10] ; 将寄存器BX 加上偏移量10 后的地址处的数据移动到寄存器AX这只是一些基本的寻址方式,具体的汇编语言和处理器架构可能会有其他特定的寻址方式。

实验三:数据存取实验

实验三:数据存取实验

一.实验目的1.了解TMS320C6713 的内部存储器空间的分配及指令寻址方式。

2.了解ICETEK-C6713-A 板扩展存储器空间寻址方法,及其应用。

3.了解ICETEK-C6713-EDU 实验箱扩展存储器空间寻址方法,及其应用。

4.学习用Code Composer Studio 修改、填充DSP 内存单元的方法。

5.学习操作TMS320C6x 内存空间的指令。

二.实验设备计算机,ICETEK-C6713-EDU 实验箱(或ICETEK 仿真器+ICETEK-C6713-A 系统板+相关连线及电源)。

三.实验原理1.TMS320C6713 DSP 内部存储器资源介绍:2.ICETEK-C6713-A 板对TMS320C6713 DSP 存储空间的扩展16M 字节SDRAM 在CE0 空间,起始地址为80000000h,16 位位宽;1M 字节FLASH 在CE1 空间,起始地址为90000000h,16 位位宽。

3.ICETEK-C6713-EDU 实验箱对TMS320C6713 DSP 存储空间的使用地址范围:901F0000h—901FFFFFh数据宽度:16 位901F0000h:ICETEK-CTR 全局控制寄存器写地址901F0002h:读取键盘扫描码地址,液晶命令写地址901F0004h:清除键盘缓冲区读地址,液晶控制写地址901F0006h:液晶左侧显示数据写地址901F0008h:液晶右侧显示数据写地址901F000Ah:发光二极管阵列数据写地址901F000Eh:发光二极管阵列使能、交通灯状态、PWM 状态写地址、直流电机使能位其它地址:保留4.MS320C56713 数据寻址方式介绍C6000 全部采用间接寻址,所有寄存器都可以做线性寻址的地址寄存器指针。

A4-A7,B4-B7 等8 个寄存器还可作为循环寻址的地址指针。

四.实验步骤1.实验准备(1)连接设备:①关闭计算机和实验箱电源开关。

内存操作数及寻址方法实验报告

内存操作数及寻址方法实验报告

内存操作数及寻址方法实验报告实验二内存操作数及寻址方法实验二内存操作数及寻址方法实验目的:通过实验掌握下列知识:1、DEBUG命令:G,N,W,L及Q。

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

3、8088指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。

4、8088汇编语言伪操作:BYTE PTR,WORD PTR。

5、求累加和程序和多字节加减法程序。

实验内容和步骤:一、内存操作数及各种寻址方式使用:内容:MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE PTR[BX],20MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DLMOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],2846步骤:1)用A命令键入上述程序,并用T命令逐条运行。

2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

答:不行。

二、求累加和程序:程序:MOV BX,1000MOV CX,10SUB AX,AXLOP: ADD AL,[BX]ADCAH,0INC BXJ: LOOP LOPINT3步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

-A 1002)用命令N AA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)4)用命令W 100将此程序存到AA命名的磁盘文件中。

5)用命令Q退出DEBUG。

6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。

汇编课第3章寻址方式与指令系统之3 (1)

汇编课第3章寻址方式与指令系统之3 (1)

北京理工大学-张华平-2010
24
① 段内直接短转移 格式:JMP SHORT LABEL 例.
JMP SHORT B1 ;无条件转移到B1标号处 A1: ADD AX,BX B1: …
北京理工大学-张华平-2010
25
② 段内直接转移 格式:JMP LABEL 或: JMP NEAR PTR LABEL
同上
测试并取反由SRC 指定的DST中的位
同上
表3-4 位测试指令
北京理工大学-张华平-2010
10
三、位扫描指令
从386开始增加了位扫描指令,它们包括 BSF、BSR指令,可用于扫描操作数中第一个含 1的位。
北京理工大学-张华平-2010
11
1.顺向扫描指令 BSF 格式:BSF DST,RSC 功能:从右向左扫描RSC操作数中第一个含1的
… B3: SUB AX,CX
… C2 ENDS
北京理工大学-张华平-2010
动画演示
29
2.条件转移指令 执行这类指令时通过检测由前边指令已
设置的标志位确定是否转移,所以它们通常 是跟在影响标志的指令之后。这类指令本身 并不影响标志。
条件转移指令的通用汇编格式: JCC LABEL
北京理工大学-张华平-2010
(设为n),空出的位用操作数OPRD2高端的n位 填充,但OPRD2的内容不变,最后移出的位在进 位标志CF中。
2.双精度右移指令 SHRD 格式:SHRD OPRD1,OPRD2,CNT
北京理工大学-张华平-2010
20
3.6 程序控制指令
本节提供的指令可以改变程序执行的顺 序,控制程序的流向。它们均不影响标志位。
表3-7 检测北单京理个工大条学件-张华标平志-201位0 转移指令 33

8086实验

8086实验

实验一、寻址方式与基本指令实验一、实验目的1.熟悉8086寻址方式及基本指令功能,进一步理解和巩固课学习内容。

2.掌握汇编语言程序设计上机过程和汇编语言源程序结构。

3.熟悉Microsoft的DEBUG调试工具的使用方法。

二、实验预习要求1.认真阅读教科书第三章,了解并熟悉汇编语言程序的上机步骤及DEBUG调试工具的使用方法。

2.复习8086操作数寻址方式及基本指令功能(数据传送、算术运算和逻辑运算等)。

3.了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题外),以便在实验时进行验证。

三、实验内容1.读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。

1)程序装入后,代码段寄存器CS的内容为H,代码段第一条可执行指令“MOV AX,DATA”对应的机器代码为H,它是一个字节指令,注意观察执行该指令时IP的变化情况,该指令源操作数DATA的寻址方式是,其值为。

2)执行完“MOV DS,DATA”指令后,数据段寄存器DS的内容为H,源程序在数据段中定义的数据库82H、68H和88H被装入的存储单元的物理地址分别为H,H和H。

3)程序中第一条“ADD AL,[BX]”指令对应的机器代码H,它是一个字节指令,注意观察执行该指令时IP的变化情况,该指令中源操作数的寻址方式为,该操作数所在存储单元的逻辑地址(DS):(BX)为,物理地址为H;执行完该指令后(AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负数?4)执行完第二条“ADD AL,[BX]”指令后,(AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?5)指令“MOV SUM,AL”中,目的操作数的寻址方式为,该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为H。

汇编实验操作答案

汇编实验操作答案

1.第一讲作业:2.1 有两个16位字1EE5H和2A3CH分别存放在IBM PC机的存储器的000B0H和000B3H 单元中,请用图表示出它们在存储器里的存放情况。

000B0H: E5H000B1H: 1EH000B2H:000B3H: 3CH000B4H: 2AH2.2 如果在一个程序开始执行以前(CS)=0A7F0H,(IP)=2B40H,试问该程序的第一个字的物理地址是多少?A7F00H+2B40H=AAA40H2.3 在IBMPC机的存储器中存放信息如图所示。

试读出30022H和30024H字节单元的内容,以及30021H和30022H字单元的内容。

30022H和30024H字节单元的内容分别为ABH、EFH30021H和30022H字单元的内容分别为AB34H、CDABH第3讲作业:1、现有(DS)=3000H,(BX)=0200H,(SI)=0002H,(30200)=24H,(30202)=0ACH,(30203)=0F0H,(31300)=54H,(31301)=98H,(31302)=6DH,试说明下列各条指令执行完后AX或AL寄存器的内容。

(1)MOV AX,1300H ;(AX)=1300H(2)MOV AL,BL ;(AL)=00H(3)MOV AX,[1300H] ;(AX)=9854H(4)MOV AL,[BX] ;(AL)=24H(5)MOV AL,1100[BX] ;(AL)=54H(6)MOV AX,[BX][SI] ;(AX)=0F0ACH(7)MOV AL, 1100[BX][SI] ;(AL)=6DH2、分别指出下列指令中的源操作数和目的操作数的寻址方式:(1)MOV SI,300 源:立即数寻址;目的:寄存器寻址(2)MOV CX,DATA[DI] 源:寄存器相对寻址;目的:寄存器寻址(3)ADD AX,[BX][SI] 源:基址变址寻址;目的:寄存器寻址(4)ADD AX,CX 源:寄存器寻址;目的:寄存器寻址(5)MOV [BP],AX 源:寄存器寻址;目的:寄存器间接寻址2作业:1、判断下列指令是否正确:(1)MOV AL,BX ;错误,长度不一致(2)MOV AL,CL ;正确(3)MOV 5,AL ;错误,立即数不能做为目的操作数(4)MOV [BX],[SI] ;错误,两个操作数都为内存单元(5)MOV BL,0F5H ;正确(6)MOV DX,2000H ;正确(7)MOV ES,DS ;错误,数据不允许在段寄存器之间传送(8)PUSH CS ;正确(9)POP CS ;错误,CS不能做为目的操作数2、设堆栈指针SP的初值为1000H,AX=2000H,BX=3000H,试问:(1)执行指令PUSH AX后SP=?(2)再执行PUSH BX及POP AX后SP=?AX=?BX=?(SP)=0FFEH(SP)=0FFEH,(AX)=3000H,(BX)=3000H3、用两种方法写出从80H端口读入信息(一个字节)的指令。

汇编语言实验报告2 - 寻址方式的综合应用及转移指令的原理

汇编语言实验报告2 - 寻址方式的综合应用及转移指令的原理

一、实验目的1.定位内存单元的寻址方式汇总2.寻址方式的综合应用3.转移指令的分类和原理4.熟悉在显存中编程的方法二、实验内容及要求(一)寻址方式的汇总及综合应用1. 定位内存单元的寻址方式有几种,并举例说明。

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

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

年份收入(千美元) 雇员人均收入(千美元) 1975 16 3 ?1976 22 7 ?1977 382 9 ?1978 1356 13 ?1979 2390 28 ?1980 8000 38 ?M1995 5937000 17800 ?下面的程序中,已经定义好了这些数据: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';年份dd 16,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,8226 dw 11542,14430,15257,17800;公司雇员人数data endstable segmentdb 21 dup('year summ ne ??')table ends编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。

8086指令操作数的寻址方式实验总结

8086指令操作数的寻址方式实验总结

8086指令操作数的寻址方式实验总结在计算机体系结构的学习中,8086指令操作数的寻址方式是一个非常重要的概念。

通过对这一概念的深入了解和实验操作,我们可以更好地理解计算机程序的执行过程,深化对计算机底层原理的理解。

在本文中,我将结合理论知识和实验结果,对8086指令操作数的寻址方式进行全面评估和总结。

1. 立即寻址立即寻址是一种直接将操作数的值嵌入指令中的寻址方式。

在8086指令集中,我们可以使用MOV指令将一个立即数传送到目的操作数中。

MOV AX, 1234h指令将立即数1234h传送到寄存器AX中。

通过实验操作,我发现立即寻址方式适用于需要直接传送常数值的情况,能够提高程序执行的效率。

2. 寄存器寻址寄存器寻址是一种通过寄存器来寻址操作数的方式。

8086微处理器具有通用寄存器AX、BX、CX、DX等,可以直接操作这些寄存器中的数据。

MOV AX, BX指令将寄存器BX中的数据传送到寄存器AX中。

在实验过程中,我发现寄存器寻址方式是一种高效的操作数寻址方式,能够提高程序的执行速度。

3. 直接寻址直接寻址是一种通过内存位置区域来寻址操作数的方式。

在8086指令集中,我们可以使用MOV指令将内存中的数据传送到寄存器中,或将寄存器中的数据传送到内存中。

MOV AX, [1234h]指令将存储在内存位置区域1234h处的数据传送到寄存器AX中。

实验结果表明,直接寻址方式可以灵活地对内存中的数据进行操作,适用于大规模数据的传送和处理。

4. 寄存器间接寻址寄存器间接寻址是一种通过寄存器中存储的位置区域来寻址操作数的方式。

在8086指令集中,我们可以使用指令将寄存器中存储的内存位置区域作为操作数进行操作。

MOV BX, [SI]指令将寄存器SI中存储的内存位置区域处的数据传送到寄存器BX中。

在实验中,我发现寄存器间接寻址方式适用于需要对内存中多个数据进行操作的情况,能够提高程序的效率和灵活性。

5. 立即偏移寻址立即偏移寻址是一种通过基址寄存器和偏移量来寻址操作数的方式。

实验3 _汇编语言程序设计

实验3 _汇编语言程序设计

实验三:16位机的汇编语言程序设计一实验目的(1) 熟悉监控命令A,D,E,G,R,T,U的使用;(2) 熟悉16位机的29条汇编指令,理解每条汇编指令执行的操作;(3) 能够利用仿真软件TEC2000Sim提供的29条汇编指令编写简单的汇编程序设计。

二实验设备PC电脑一台;需安装软件TEC2000Sim。

三实验准备指令格式、寻址方式和指令系统是讲解、设计和实现控制器部件的基础,但讲解起来枯燥抽象,要让学生真正对这部分教学内容有适度了解和切身体会,开展汇编语言程序设计的实验是必要的,实验不太难,又能提高学生的学习兴趣,有利于加深对指令及指令系统的理解,有利于掌握教学计算机的使用,为开展后续其他教学实验项目做好必要准备。

这项实验最好在16位字长的教学计算机上完成,也可以使用一个我们开发的、运行在PC机上的仿真软件TEC2000sim来进行。

实验内容包括学习教学机的监控程序的使用方法,即如何通过7个监控命令A、U、E、D、R、G、T操作和运行教学计算机。

A命令用于向计算机内输入汇编语言程序的源码,执行单个语句的汇编操作,并把汇编产生的指令代码程序保存到存储器的指定区域;U命令用于对已经保存在内存中的指令代码程序执行反汇编操作,反汇编的结果将被显示到仿真终端的屏幕上,供操作者检查看或修改。

E命令用于向计算机的存储器输入16进制的信息或修改某些存储单元的内容;D命令用于卸出计算机的存储器中的信息并依规定格式显示到仿真终端的屏幕上;R命令用于显示或修改通用寄存器的内容;G命令用于启动内存中的一个指令代码程序,启动后程序连续运行,运行结束后将返回到监控程序的断点,继续运行监控程序;T命令也用于启动内存中的一个指令代码程序,但会使程序处于单指令运行状态,即每发一次T命令只执行用户程序的一个语句,之后就自动回到监控程序的运行状态,使操作者可以跟踪程序的运行过程,随时检查程序的运行结果。

实验的重点内容是学习汇编语言程序设计。

合工大(汇编)语言程序设计实验报告

合工大(汇编)语言程序设计实验报告

.合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:****************学号:**********姓名:*****目录实验一··3实验二··7实验三··12实验四··22实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序实验内容一:e ds:0200 E7 1A 3F 00e ds:0204 C4 E5 6B 00实验内容二:(1)直接寻址方式MOV AX,[0200]MOV BX,[0202]ADD AX,[0204]ADC BX,[0206]MOV [0208],AXMOV [020A],BX(2)寄存器间接寻址方式MOV SI,0200HMOV DI,0204HMOV BX,0208HMOV AX,[SI]MOV DX,[SI+2]ADD AX,[DI]ADC DX,[DI+2]MOV [BX],AXMOV [BX+2],DX四.实验结果(包括必要的截图)实验内容一:输入数据:显示数据:实验内容二:(1)直接寻址方式程序段编辑:反汇编:运行:结果在DS:0208 单元中为00AB00ABH(2)寄存器间接寻址方式程序段编辑:反汇编:运行:结果高字存放在dx中,低字存放在ax中(结果为00AB00ABh)五.实验体会通过本实验,实践debug程序中的命令,并在debug下调试运行汇编语言源程序。

实验3_认识寻址方式

实验3_认识寻址方式

实验三 认识寻址方式3.1 实验目的(1)学习和掌握操作数的各种寻址方式(2)学习使用Debug创建和调试程序3.2 预备知识1.操作数和寻址方式操作数是指令或程序的主要处理对象。

在CPU的指令系统中,除了NOP空操作、HLT停机等少数指令外,大量的指令在执行过程中都会涉及到操作数。

所以,在指令中如何表达操作数或操作数所在的位置是正确运用汇编指令的一个重要因素。

寻址方式是指操作数或操作数存放位置的方法。

通俗地说,就是寻找操作数位置的方法。

操作数的各种寻址方式是用汇编语言程序解决问题的基础。

8086系统有7种寻址方式:立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、基址变址寻址方式和相对基址变址寻址方式。

在80386CPU之后,增加了比例变址寻址、基址比例变址寻址和相对基址比例变址寻址等3种方式。

除了立即寻址方式和寄存器寻址方式外,其余均为存储器寻址方式。

2. 传送指令MOV传送指令是使用最为频繁的指令,它相当于高级语言中的赋值语句。

指令格式:MOV Reg/Mem,Reg/Mem/ImmReg:寄存器;Mem:存储器;Imm:立即数。

它们可以是8位、16位或32位。

指令的功能是将源操作数SRC(第二操作数)的值传送给目的操作数DST(第一操作数)。

指令执行后,目的操作数被改变,而源操作数的值保持不变。

当存储单元作为操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。

3. 加法指令ADD指令格式:ADD Reg/Mem,Reg/Mem/Imm受影响的标志位:AF,CF,OF,PF,SF,ZF。

指令的功能是把源操作数的值加到目的操作数中。

4. 减法指令SUB指令格式:SUB Reg/Mem,Reg/Mem/Imm受影响的标志位:AF,CF,OF,PF,SF,ZF。

指令的功能是把源操作数与目的操作数的值相减并存到目的操作数中。

5.中断INT 20功能:终止当前程序的运行。

入口参数:CS=PSP的段地址出口参数:无3.3 实验内容一、寻址方式通过实验观察和分析在不同的寻址方式下存储单元逻辑地址的表示以及指令的执行结果。

汇编实验报告

汇编实验报告

《汇编程序设计》实验报告班级网络工程3班姓名院系计算机科学学院学号指导教师郭荣佐计算机科学学院目录实验一Debug命令的使用一,实验目的及要求1,汇编语言调试环境Debug的使用,重点掌握常用命令(A R D E T)的使用,其他指令在以后的学习中逐步掌握。

2,利用Debug命令,调试采用不同寻址方式的指令的执行结果,从实践中加深对寻址方式和MOV指令的理解。

二,实验内容1,Debug程序的调入和退出2,Debug常用调试命令的使用3,MOV.XCHG.XLAT指令的调试三,实验步骤(一)、DOS常用命令练习:1.查看目录下所有的文件:2.键入 CD进入上级目录,再查看的结果:3.用COPY复制一个文件:4.用RENAME重命名一个文件:4.用DEL删除一个文件:(二)、DEBUG练习1,输入代码2,分步执行代码3,显示内存4,修改0100处的指令5,修改2000单元的值四,扩展题1,MOV指令的调试2,XCHG指令的调试3,XLAT指令的调试五、18条指令1。

.2.比较命令3.显示命令D:4.修改命令E:5‘填充内存指令F:6执行命令G:7.十六进制算求算运算指令H:8.断口输入命令I:9.读盘命令L:10.内存搬家命令M:11.命名待读/写文件命令N:12.段口输出命令O:13.结束debug返回DOS命令Q14.显示修改寄存器命令R15.搜索指定寄存器内容命令S16.执行并显示系统环境命令T 17.反汇编命令U18.写盘命令W实验二、基本汇编指令的使用一、实验目的及要求1.继续熟悉汇编语言调试环境Debug的使用,掌握常用调试命令。

2.用基本指令编写的程序段,并在Debug环境中调试,从实践中加深对基本汇编语言指令的执行过程的理解。

3.实验前要做好充分准备,包括汇编程序段清单、调试步骤、调试方法,以及对程序结果的分析等二、实验内容1单步调试一下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF 的状态。

汇编实验心得体会

汇编实验心得体会

汇编实验心得体会在学习计算机组成原理的过程中,汇编语言是一个非常重要的环节。

通过学习汇编语言,我们可以更深入地了解计算机的工作原理,从而更好地理解高级语言的运行机制。

在学习汇编语言的过程中,实验是非常重要的一部分。

通过实验,我们可以更加深入地理解汇编语言的运行机制,同时也可以提高我们的实践能力。

在这篇文章中,我将分享我在学习汇编语言实验过程中的心得体会。

实验一:汇编语言程序设计在实验一中,我们需要编写一个简单的汇编语言程序,实现对两个数的加法运算。

这个实验对于初学者来说比较简单,但是也有一些需要注意的地方。

首先,我们需要了解汇编语言的基本语法。

在汇编语言中,每一条指令都是由操作码和操作数组成的。

操作码用来表示指令的功能,操作数则用来指定操作的对象。

在编写汇编语言程序时,我们需要注意指令的顺序和操作数的使用。

其次,我们需要了解汇编语言的寻址方式。

在汇编语言中,寻址方式有直接寻址、寄存器寻址、间接寻址等多种方式。

不同的寻址方式对应不同的指令格式,我们需要根据具体的情况选择合适的寻址方式。

最后,我们需要注意程序的调试和测试。

在编写汇编语言程序时,我们需要不断地进行调试和测试,确保程序的正确性。

在调试和测试过程中,我们可以使用调试器或者打印输出等方式来查看程序的执行结果,从而找到程序中存在的问题。

实验二:汇编语言程序调试在实验二中,我们需要使用调试器来调试一个汇编语言程序。

这个实验对于初学者来说比较难,需要一定的耐心和技巧。

首先,我们需要了解调试器的基本操作。

在调试器中,我们可以设置断点、单步执行、查看寄存器和内存等操作。

这些操作可以帮助我们更加深入地了解程序的执行过程,从而找到程序中存在的问题。

其次,我们需要注意程序的调试技巧。

在调试程序时,我们需要注意程序的执行顺序和变量的值。

通过设置断点和单步执行等操作,我们可以逐步地了解程序的执行过程,从而找到程序中存在的问题。

最后,我们需要注意程序的测试和验证。

七种寻址方式举例例题

七种寻址方式举例例题

七种寻址方式举例例题:
1. 立即寻址:指令直接包含操作数,不需要经过任何地址计算。

例:MOV AL, 5 //把5赋值给AL寄存器。

2. 寄存器寻址:操作数在寄存器中,不需要经过任何地址计算。

例:MOV AX, CX //把CX寄存器的内容(即计数器的值)赋给AX寄存器。

3. 寄存器间接寻址:操作数需要经过地址计算才能取出,常用于寄存器间接寻址。

例:MOV DX, 8000H //把偏移地址8000H处的数据(即偏移地址加起来,实质是访问内存地址)赋给DX寄存器。

4. 直接寻址:指令直接给出操作数,需要经过地址计算。

例:MOV AL, [DX] //把偏移地址为DX的数据赋给AL寄存器。

5. 零页寻址:对于某一段指令来说,0页至1页的1024个字节被作为一个整体来处理,称这一段地址为零页。

例:MOV AX, [0F00H] //把偏移地址为0F00H的数据(即偏移地址加起来,实质是访问内存地址)赋给AX寄存器。

6. 间接寻址:指令给出的是内存地址,需要经过地址计算才能取出操作数。

例:MOV AX, [ES:DX] //把ES段的偏移地址DX(即ES段中偏移地址为DX的数据)处的数据赋给AX寄存器。

7. 偷窥寻址:在X86指令集中,有些指令后面可以跟一个“偷窥”码,该码指示该指令后面紧跟的某一条指令(即偷窥指令)被执行时,其内容被自动设置为零。

例如,在8086微处理器的汇编语言中,LOP指令用于循环执行一段指令,当执行LOP时,LOP后面的指令被执行,其内容被自动设置为零。

寻址方式与基本指令实验

寻址方式与基本指令实验

微机原理实验寻址方式与基本指令实验寻址方式与基本指令实验2.1.1 实验目的1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。

2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。

3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法2.1.2 实验预习要求1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。

2、认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。

3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。

4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。

2.1.3 实验内容1、 读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。

(1) 程序装入后,代码段寄存器CS的内容为____1112__H,代码段第一条可执行指令MOV AX, DATA对应的机器代码为______B81111____H,它是一个____3____字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是____立即数寻址______,其值为_____0003H____。

(2) 执行完MOV DS, DATA指令后,数据段寄存器DS的内容为___1111_____H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为___1110_____H、___1111_____H和____1112____H。

(3) 程序中第一条ADD AL, [BX] 指令对应的机器代码为____0207______H,它是一个___2_____字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为_____寄存器间接寻址_____,该操作数所在存储单元的逻辑地址(DS): (BX)为_ 1111:0001___,其物理地址为____11111______H;执行完该指令后(AL)=___EA___H,CF=___NC__,OF_=__NV_,ZF=__NZ__,SF=PL,AF=NA,PF=PO;若两操作数为无符号数,计算结果是否正确__是____?若两操作数为带符号数,计算结果是否正确__是____?若计算结果正确,结果是正数还是负数___负___?(4) 执行完第二条ADD AL, [BX] 指令后(AL)=___72___H,CF=__CY____,OF=____OV_,ZF__=_NZ___,SF___=_PL__,AF=_AC____,PF=__PE__;若两操作数为无符号数,计算结果是否正确__否___?若两操作数为带符号数,计算结果是否正确___否_____?(5) 指令MOV SUM, AL中目的操作数的寻址方式为___寄存器寻址_______。

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

实验三汇编数据寻址的方法(2学时)实验目的
通过实验掌握下列知识:
1、DEBUG命令:G,N,W,L及Q。

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

3、8086指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。

4、8086汇编语言伪操作:BYTE PTR,WORD PTR。

5、求累加和程序和多字节加减法程序。

实验类型:验证
实验内容和步骤
一、内存操作数及各种寻址方式使用
程序内容:
MOV AX,1234
MOV [1000],AX
MOV BX,1002
MOV BYTE PTR[BX],20
MOV DL,39
INC BX
MOV [BX],DL
DEC DL
MOV SI,3
MOV [BX+SI],DL
MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],2846
操作步骤
一、内存操作数及各种寻址方式使用
程序内容:
MOV AX,1234
MOV [1000],AX
MOV BX,1002
MOV BYTE PTR[BX],20
MOV DL,39
INC BX
MOV [BX],DL
DEC DL
MOV SI,3
MOV [BX+SI],DL
MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],2846
操作步骤
1)用A命令键入上述程序,并用T命令逐条运行。

2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

寄存器寻址
2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH, 0EH。

在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。

程序清单如下:
MOV AX,BX
MOV AX,0304H
MOV AX,[0304H]
MOV AX,[BX]
MOV AX,0001[BX]
MOV AX,[BX][SI]
MOV AX,0001[BX][SI]
把bx,si以及ds:300到ds:304设置为0a,0b,0c,0d,0e
用-a输入代码
分析:MOV AX,BX 把bx送入ax中,ax=0300H
MOV AX,0304H ax=0304
MOV AX,[0304H] 把0304地址的内容赋给ax,ax=0e
MOV AX,[BX] 因为,bx=0300,所以ax=[0300]=0a
MOV AX,0001[BX] ax=[0301]=0b
MOV AX,[BX][SI] ax=[0300]2=[0302]=0c
MOV AX,0001[BX][SI] ax=0001[0300]2=[0303]=od
二、求累加和程序:
程序内容:
MOV BX,1000
MOV CX,10
SUB AX,AX
LOP: ADD AL,[BX]
ADC AH,0
INC BX
J: LOOP LOP
INT3
操作步骤:
1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际
地址,在键入LOOP指令时LOP用实际地址值代替。

2)用命令N AA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)。

4)用命令W 100将此程序存到AA命名的磁盘文件中。

5)用命令Q退出DEBUG。

6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。

若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。

7)用E命令在内存地址1000H处键入16个数字
8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。

9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,
检查程序是否有错。

10)重复G J与T,再检查AX是否正确。

11)用G命令使程序运行到结束,检查AX值是否正确。

三、多字节加法程序。

程序:
MOV DI,1000
MOV CX,8
MOV SI,2000
CLC
LOP: MOV AL,[SI]
ADC [DI],AL
INC SI
INC DI
LOOP LOP
INT 20
步骤:
用命令键入此程序
用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。

用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确?
将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试一试。

四。

自编程序:
用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同上题。

调试并做记录。

MOV DI,1000
MOV CX, 4
MOV SI ,2000
CLC
LOP:MOV AL[SI]
SBB [DI],AL
INC SI
INC DI
LOOP LOP
INT 20。

相关文档
最新文档