32位微机原理上机实验报告:7种寻址方式指令编程
- 格式:doc
- 大小:33.50 KB
- 文档页数:3
微机原理及应用实验实验一开发环境的使用一、实验目的掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。
二、实验内容在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的30H~7FH 单元清零。
三、实验设备PC机一台。
四、实验步骤用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。
五、实验思考1.如果需把30H-7FH 的内容改为55H,如何修改程序?2.如何把128B的用户RAM全部清零?六、程序清单文件名称:CLEAR.ASMORG 0000HCLEAR: MOV R0,#30H ;30H 送R0寄存器MOV R6,#50H ;50H 送R6寄存器(用作计数器)CLR1: MOV A,#00H ;00 送累加器AMOV @R0,A ;00 送到30H-7FH 单元INC R0 ;R0 加1DJNZ R6,CLR1 ;不到50H个字节,继续WAIT: LJMP WAITEND实验二数据传送一、实验目的掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。
二、实验内容1.编制一段程序,要求程序中包含7中不同寻址方式。
2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。
3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。
4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。
三、实验设备PC机一台。
四、实验步骤逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。
五、实验思考1.如何把片外RAM中1000H~100FH单元中的数传送到片外RAM中2000H~200FH单元中?2.如何把ROM中0200H~0207H单元的数传送至片外RAM0000H~0007H单元中?实验三数码转换一、实验目的掌握采用软件方法进行不同形式数据之间的转换,如十进制数与二进制数的转换、十六进制数与BCD码的转换、BCD数与ASCII码之间的转换、非压缩BCD码与压缩BCD码之间的转换。
西北工业大学明德学院实验报告实验项目微机原理及应用班级 121204姓名田家豪王辰硕学号 121566 121567指导老师伍明高时间 2015-3-31实验题目各种逻辑指令的编程实验目的1、掌握在PC机上各种逻辑指令的用法2、熟悉各种逻辑指令的用法实验内容在上次编辑七种寻址方式实验的中加入各种逻辑指令的运算,并且调试。
程序如下:STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDDATA SEGMENTMSR DB 'HELLO,WORLD!$'LEN EQU $- MSRDDATA ENDSEXDA SEGMENTMSD DB LEN DUP(?)EXDA ENDSCODE SEGMENTASSUME CS:CODE,DS:DDATA,ES:EXDASTART: MOV AX,DDA TAMOV DS,AXMOV AX,EXDAMOV ES,AXMOV SI,OFFSET MSRMOV DI,OFFSET MSDMOV CX,LENMOV BX,0NEXT: MOV AL,MSR[BX]MOV ES:MSD[BX],ALINC BXLOOP NEXTPUSH ESPOP DSMOV DX,OFFSET MSDMOV AH,9INT 21HMOV AX,2233HMOV DX,3344HADD AX,DXADD AL,DLADD AX,5566HADC AL,DHDIV BLMOV BX,6677HMUL BXSBB AX,DXMOV AX,4C00HINT 21HCODE ENDSEND START实验步骤1. 运行编译器,编译程序。
2. 单击编译,保存。
3. 调试程序。
实验总结1. 通过实验,熟悉了各种逻辑指令的用法,了解了其程序的编译。
2. 调试程序的过程中需要不断地发现问题、解决问题。
3. 实验过程中,各指令的用法十分复杂,需要不断练习,熟悉指令的运行目的。
注意:::红笔写的为根据课本该写的,可能有错!!!一、数据传输指令作用:它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSH把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHA 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )XADD 先交换再累加.( 结果在第一个操作数里)XLAT 字节查表转换.BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器. PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令ADD 加法.ADC 带进位加法.INC 加1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减1.NEC 求反(以0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) CWD 字转换为双字. (把AX中的字的符号扩展到DX中去) CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) 三、逻辑运算指令AND 与运算.OR 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果). SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次. 移位一次时, 可直接用操作码. 如SHL AX,1. 移位>1次时, 则由寄存器CL给出移位次数. 如MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序(控制)转移指令1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )一测试无符号整数运算的结果(标志C和Z).JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于或者进位为0转移.JB/JNAE 小于等于或者进位为1转移.JBE/JNA 小于或等于转移.二测试带符号整数运算的结果(标志S,O和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.三根据单个条件标志位转移的条件转移指令。
32位微机原理与接口技术冯·诺伊曼机具有基本特点;1.计算机由运算器、控制器、存储器、输入设备与输出设备五部分组成。
2.采用存储程序的方式,程序和数据放在同一个存储器中,指令和数据一样可以送到运算器运算,即由指令组成的程序是可以修改的。
3.数据以二进制码表示。
4.指令由操作码和地址码组成。
8086微处理器的功能结构指令周期=取指周期+执行周期1.执行部件EU1)4个16位通用寄存器AX BX CXDX2)4个16位专用寄存器SP(堆栈指针)BP(基址指针)SI (源变址寄存器)DI(目的变址寄存器)3)16位标志寄存器状态标志有6个:CF、PF、AF、ZF、SF和OF进位标志CF 奇偶标志PF 辅助进位标志AF 零标志ZF符号标志SF 溢出标志OF控制标志有3个:TF、IF和DF跟踪标志TF 中断允许标志IF 方向标志df4)算术逻辑单元ALU 可以完成多种运算,包括加、减、乘、除等算术运算和与、或、非等逻辑运算。
2.总线接口部件BIU1)6字节的指令队列2)4个16位段地址寄存器CS、DS、SS、ES。
3)16位指令指针寄存器IP4)20位地址加法器由16位段地址寄存器和某个16位偏移地址相加,形成20位的地址,访问外部存储器。
U流水线和V流水线每条流水线都有自己的地址生成器、ALU。
U流水线可执行所有的整数和浮点指令(浮点指令会被提交给浮点单元实现);V流水线只能能执行简单的整数指令和一条异常的FXCH 指令。
IA-32微处理器的工作模式1.实地址模式32位微处理器完全模仿16位微处理器,只是功能稍强、速度更快。
通过修改控制寄存器CR0中的PE控制位,可以切换到保护模式。
2.保护模式该模式是处理器的原生模式,可访问4GB字节的物理存储空间,支持段、页两级保护机制,段有4个特权级,页面有2 个特权级。
0级为最高特权级,3为最低特权级。
可防止特权级低的程序或任务访问特权级高的段。
3.虚拟8086模式该模式不是一种专门的处理器工作模式,而是保护模式下的一种功能。
suogr@ 教学群号:31696867教9楼C506实验室西北师范大学计算机科学与工程学院 微机原理及汇编寻址方式索国瑞2014春选课班实训题目2014年3月24日星期一2西北师大计算机学院索国瑞:suogr @ 实训目的⏹初步了解指令的转移寻址方式⏹初步了解操作数的寻址方式⏹体验8086CPU 的物理地址和有效地址计算过程⏹进一步学习观察计算机运行状况⏹进一步学习分析计算机运行情况2014年3月24日星期一3西北师大计算机学院索国瑞:suogr @ 知识准备⏹寻址方式:就是确定操作对象的方式⏹ 依据操作对象的不同性质,寻址方式可分为: 与数据有关的寻址方式 与转移有关的寻址方式 隐含寻址⏹一般计算机系统中数据来源主要有以下四项 立即数:操作数在指令中 寄存器:操作数保存在寄存器中存储器:操作数保存在存储器中,一般就指内存 端口: 操作数在端口2014年3月24日星期一4西北师大计算机学院索国瑞:suogr @ 立即寻址⏹操作数作为立即数直接包含在指令中,紧跟在操作码之后与其一起存放在代码段区域。
取指令时与操作码一起被取入CPU的指令队列,不需要在指令执行时再访问存储器⏹例如 MOV AX, 1234H指令中的1234H就是立即数,其所对应的寻址方式就是立即寻址方式⏹立即数不能作为目的操作数使用,只能作为源操作数。
⏹8086指令系统中超过8位的立即数在存放时也遵循“低前高后”原则。
2014年3月24日星期一5西北师大计算机学院索国瑞:suogr @ 立即寻址例程分析⏹设有如下代码 MOV AL, 99H MOV BX, 1234H MOV CX, 5678H⏹这三条指令的源操作数都是立即数,都是立即寻址方式。
区别在于第一条指令的立即数是8位字节类型,而后两条指令的立即数都是16位字类型。
存储在内存中时要注意按照“低前高后”规则去理解⏹8086 CPU 指示将要执行的下一条指令的寄存器是CS 和IP ,前者提供段基址,后者提供段内偏移。
微机原理寻址方式
一、直接寻址
直接寻址是指微处理器从指令队列直接检索出一个指令,而另一种方法是间接寻址。
在直接寻址中,指令的参数是指令中内置的,指令的地址也是内置的。
这意味着,如果需要加载参数或者变更指令的地址,需要在另外的单元中完成。
因此,直接寻址是最简单易用的一种寻址方式,只要执行指令即可,不需要进行其他的复杂计算。
在微机原理中,直接寻址的一些指令如下:MOV,XCHG,JMP,CALL,RET等。
二、间接寻址
间接寻址是指微处理器从指令队列检索出的指令中,指令的参数可以在指令本身外面的处显示,而指令的地址可以在指令本身内部显示。
这意味着,在间接寻址中,需要计算参数和指令的地址,以便执行指令。
在微机原理中,一些间接寻址指令是:MOV[BX],M[BX]等。
三、基址寻址
基址寻址是一种特殊的间接寻址。
这种形式的寻址方式用于将一切基本操作符(包括引用操作数,存取操作码及一些常数)映射到一个寻址空间中。
这种寻址方式在微机原理中很常见,例如:MOVAL,[BX+SI],MOV[BX+SI],AL等。
四、索引寻址
索引寻址是一种特殊的间接寻址,这种寻址方式允许微处理器以索引(例如指令中的一些寄存器)来定位操作数。
西北工业大学明德学院
实验报告
实验项目微机原理及应用
班级 121204
姓名田家豪王辰硕
学号 121566 121567
指导老师伍明高
时间 2015-3-24
7种寻址方式指令编程
实验目的
通过对传送和算术运算类指令的实验结果的观察和分析,加深对各指令完成操作功能的理解,并了解各指令对于相关标志位的影响。
实验内容
7种寻址方式指令的编程包括:
(1)MOV传送类;
(2)堆栈操作传送;
(3)交换传送;
(4)输入/输出传送;
(5)串传送指令等。
(6)在指令后面注释源操作数和目的操作数的寻址方式。
程序如下:
DA TA SEGMENT
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
STADA TA
SEGMENTRT:MOV AX,DATA
MOV DS,AX
MOV AL,04H
MOV DX,2000H //立即寻址
MOV AX,99AAH
MOV BX,1257H
SUB AX,BX //寄存器寻址
MOV AX,5000H
MOV SI,3000H
MOV AX,DS:[SI] //寄存器间接寻址
PUSH AX
PUSH EBX
PUSH[SI]
PUSH DOWRD PTR[DI]
PUSHW 0A124H
PUSHD 20H //堆栈操作指令
MOV AX,3000H
XCHG AX,1000H
MOV 3000H,AX //交换传送指令
IN DX,7000H
IN AX,DX //输入指令
1. 建立文件,编写源程序。
2. 编译、连接生成EXE可执行文件。
3. 行调试,分析每条指令的寻址方式,验证操作数所在的地址空间。
实验总结
1. 通过本次实验,可以正确的编写传送类指令与算术运算类指令、逻辑运算类指令的应用实验,并了解了编译链接调试的过程,检查程序结果的正确与否,会观察分析。
2. 更加清楚的能分析各种运算指令,并对其有了更深的理解。
3. 实验过程中必须认真仔细,特别是在应用逻辑运算指令时,不然一旦有一点错误,实验就无法正常进行,必须返回去查找错误,费时费力。