北交大微机原理研究性学习报告-指令系统.docx

上传人:scccc 文档编号:11234437 上传时间:2021-07-16 格式:DOCX 页数:14 大小:207.01KB
返回 下载 相关 举报
北交大微机原理研究性学习报告-指令系统.docx_第1页
第1页 / 共14页
北交大微机原理研究性学习报告-指令系统.docx_第2页
第2页 / 共14页
北交大微机原理研究性学习报告-指令系统.docx_第3页
第3页 / 共14页
北交大微机原理研究性学习报告-指令系统.docx_第4页
第4页 / 共14页
北交大微机原理研究性学习报告-指令系统.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《北交大微机原理研究性学习报告-指令系统.docx》由会员分享,可在线阅读,更多相关《北交大微机原理研究性学习报告-指令系统.docx(14页珍藏版)》请在三一文库上搜索。

1、研究性学习报告 指令系统目录1 学习目的:32 实验环境:33 学习过程:33.1 数据传送类指令:33.1.1 数据传送指令(MOV)33.1.2 数据交换指令(XCHG)43.1.3 堆栈操作指令(PUSH/POP)43.1.4 查表转换指令(XLAT)53.1.5 地址传送指令(LEA/LDS)53.1.6 标志位传送指令53.1.7 I/0数据传送指令63.2 算数运算类指令73.2.1 加法指令73.2.2 减法指令83.2.3 乘法指令103.2.4 除法指令103.3 逻辑运算类指令113.3.1 逻辑运算指令:113.3.2位移指令134 心得体会141 学习目的: 通过在计算

2、机debug环境下,调试各类指令,实现熟悉80x86的常用指令及功能的目的。2 实验环境: 32位window xp DEBUG环境3 学习过程:3.1 数据传送类指令:3.1.1 数据传送指令(MOV)格式:MOV dst(寄存器、储存器),src(立即数、寄存器、储存器)功能:源操作数传送至目标单元,源操作数保持不变。数据传送具有一定方向:(1) 立即数传送至通用寄存器获储存器。(2) 通用寄存器与存储器之间相互传输。(3) 通用寄存器之间相互传送。(4) 通用寄存器与段寄存器(CS不能作为目标)之间相互传送。(5) 储存器与段寄存器(CS不能作为目标)之间相互传送。调试举例: MOV A

3、X,1000H ;立即数1000H送到AX MOV DS,AX ;AX内容传送到DS 3.1.2 数据交换指令(XCHG)格式:XCHG dst(通用寄存器、储存器),src(通用寄存器、储存器)功能:源操作数与目标操作数相互交换。调试举例: XCHG AX,BX; AX与BX的内容交换3.1.3 堆栈操作指令(PUSH/POP)1)数据进栈指令(PUSH) 格式:PUSH src 功能:先将SP/ESP减2/4修改,然后将源操作数压入SP/ESP指定的位置。高字节数据存放在高地址单元,低字节数据存放在低地址单元。2)数据出栈指令(POP) 格式:POP dst 功能:从栈顶弹出操作数送入目的

4、操作数。目的操作数允许为16或32位通用寄存器、存储器和16位段寄存器。当操作数数据类型为字类型,出栈操作使SP加2;当操作数数据类型为双字类型,出栈操作使SP加4。调试举例: PUSH AX; 将AX的数据压入堆栈 POP BX; 将堆栈中的数据弹出到BX中使用堆栈操作指令应注意以下问题:(1)目的操作数不允许为CS以及立即数。(2)堆栈操作指令不影响标志位。3.1.4 查表转换指令(XLAT)格式:XLAT功能:查表得到的字节数据送入AL中。说明:BX寄存器存放表的首地址,AL寄存器中存放表内偏移量,执行XLAT指令,以段寄存器DS的内容为段基址,有效地址为BX和AL内容之和,取出表中一个

5、字节内容送AL中。该指令在debug中调试较为困难,所以略去。 3.1.5 地址传送指令(LEA/LDS)1)有效地址传送指令(LEA) 格式:LEA dst(通用寄存器),src(储存器寻址) 功能:源操作数的有效地址EA传送到目标。2)目标地址传送指令(LDS) 格式:LDS dst,src 功能:将源操作数中存放的地址指针“段基址:偏移地址”的低16位传送到目标通用寄存器中,高16位传送到DS段寄存器中。源操作数必须是存储器地址,目标操作数为16位通用寄存器。调试举例: LEA AX,1000; 3.1.6 标志位传送指令1)LAHF ;将标志寄存器的低8位传送到AH寄存器2)SAHF

6、;将AH的低8位数传送到标志寄存器的低8为3)PUSHF;标志位寄存器内容进栈4)POPF ;将堆栈中弹出的数送标志寄存器调试举例: LAHF MOV AH,01 SAHF MOV AX,0 PUSH AX POPF3.1.7 I/0数据传送指令1)输入指令(IN) 格式:IN ac,port 功能:将端口的数据送入CPU累加器。2)输出指令(OUT) 格式:OUT port,ac 功能:将CPU累加器中的数据写入端口。调试举例: IN AL,28 OUT 28,AL注意:在I/O端口直接和间接寻址I/O指令中,端口地址和DX不允许加“ ”。3.2 算数运算类指令3.2.1 加法指令1)不带进

7、位的加法指令: 格式:ADD dst,src 功能:目标+源目标。2)带进位的加法指令: 格式:ADC dst,src 功能:目标+源+CF目标。3)加1指令: 格式:INC dst 功能:目标+1目标。调试举例: MOV AL,68 MOV BL,18 ADD AL,BL; 68H+18H=80H 执行指令后,辅助进位标志由0(NA)变为1(AC),其他标志位无变化。 MOV AL,68 MOV BL,18 ADC AL,BL; 68H+18H+1H=81H执行前进位标志位为1,执行ADC命令后,结果为81H,同时进位标志位清零。 INC AX; AX累加13.2.2 减法指令1)不带借位的

8、减法指令 格式:SUB dst,src 功能:目标-源目标。2)带借位的减法指令 格式:SUB dst,src 功能:目标-源-CF目标。3)减1指令 格式:DEC dst 功能:目标-1目标。4)比较指令 格式:CMP dst,src 功能:目标操作数减源操作数,不回送结果,只是形成标志位。调试举例: MOV AX,1200 SUB AX,1201; 1200-1201 指令执行后,符号位SF由0(PL)置1(NG),表示结果为负数,零标志位ZF由1置0,表示结果不为0,进位标志CF由0置1,表示有借位产生。 DEC BX; BX减1 MOV AX,-26 MOV BX,16 CMP AX,

9、BX; 比较-26和16的大小因为-26比16小,所以符号位(SF)置1,进位标志位(CF)置1。3.2.3 乘法指令格式:MUL/IMUL src乘数被乘数乘积字节ALAX字AXDX:AX双字EAXEDX:EAX调试举例: MOV AX,12 MOV BX,256 MUL BX; 12*256=2A0C3.2.4 除法指令格式:DIV/IDIV src除数被除数商余数字节AXALAH字DX:AXAXDX双字EDX:EAXEAXEAX调试举例: MOV AX,19 MOV BX,9 DIV BX;19H/9H=2H719H/9H=2H7,商保存在AX中,余数保存在DX中。 MOV AX,-19

10、 MOV BX,9 IDIV BX;-19/9 3.3 逻辑运算类指令3.3.1 逻辑运算指令:1)逻辑与 格式:AND dst,src 功能:源操作数和目标操作数按位“与”,结果送目标单元2)逻辑或 格式:OR dst,src 功能:源操作数和目标操作数按位“或”,结果送目标单元3)逻辑异或 格式:XOR dst,src 功能:源操作数和目标操作数按位“异或”,结果送目标单元4)逻辑取反 格式:AND dst,src 功能:目标操作数按位“取反”,结果送目标单元调试举例: MOV AL,36 AND AL,0F;屏蔽AL中的高4位 MOV AL,6 OR AL,30;将立即数的高四位与AL中

11、的第四位合并 MOV AL,OF XOR AL,AL; 将AL内容清零 MOV AL,0F NOT AL;将AL的内容取反3.3.2位移指令1)逻辑左/右移 格式:SHL/SHR dst,1/CL; 功能:将操作数看成无符号数来进行位移,每移动一位在最低位或最高位补“0”,把最后移出的位保存在“CF”中。2)循环左/右移 格式:ROL/ROR dst,1/CL 功能:循环左移指令ROL,目的操作数左移,每移位一次,其最高位移入最低位,同时最高位也移入进位标志CF。循环右移指令 ROR,目的操作数右移,每移位一次,其最低位移入最高位,同时最低位也移入进位标志CF调试举例: MOV AX,8000

12、 SHL AX,1;AX逻辑左移1位 MOV AX,8000 ROL AX,1;AX循环左移1位4 心得体会指令系统是学习汇编语言程序设计的基础,而各类指令繁多,功能各异,如果仅凭老师讲授的方法很难真正掌握,唯有上机实践,独立去操作每一条指令,才能深刻理解他的功能,并加强记忆。我的电脑是64位系统。开始调试的时候使用的是DOSBOX模拟32位系统的环境,虽然能完成一些指令的调试,可是不能完成汇编程序编写,因此放弃了这种方法,转而使用32位的xp虚拟机,但debug环境不能完成所有指令的调试,比如不能实现控制转移类指令,也不能清晰的看到数据段中内容的变化,因此,这些功能有待于下一次的研讨去深刻体验。这次的研究性学习,独立完成的过程中,会遇到一些问题,有些是课本上未涉及的,比如debug环境中标志位的表示与课本上不一样,但通过上网查找相关资料,了解了相关标志位的表示方法。总之,这次的研学很好的复习了课上所讲的内容,为今后的汇编程序设计打下了坚实的基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1