微机原理指令系统实验共33页
- 格式:ppt
- 大小:3.55 MB
- 文档页数:33
实验一清零程序1、实验目的掌握8088汇编语言程序设计和调试方法,熟悉键盘操作。
2、实验内容把RAM区内4000H~40FFH单元的内容清零。
3、程序框图4、实验步骤用连续或单步方式运行程序,检查4000H~40FFH中执行程序前后的内容变化。
5、思考假使把4000H~40FFH中的内容改成FF,如何修改程序。
实验二:拆字程序一、实验目的(5分钟)掌握汇编语言程序设计的方法及程序调试方法。
二、实验内容把4000H的内容拆开,高位送4001H低位,低位送4002H低位,4001H和4002H的高位全部清零,一般本程序用于把数据送显示缓冲区时用。
三、程序流程四、实验步骤1、LED环境(1)在P.状态下按“0—EV/UN”,装载实验所需的代码程序。
(2)在P.状态下按键入3020,然后按STEP或EXEC进入入实验项目的调试与运行。
2、PC环境在与PC联机状态下,编译、连接、下载PH88\se02.asm,用连续或单步方式运行程序。
3、在单步运行时,每走一步可观察其运行结果。
在连续运行状态下,应按“暂停图标”或试验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查4000H~4002H中执行程序前后的内容变化。
实验三数据区移动1、实验目的掌握RAM中的数据操作。
2、实验内容把4100H源RAM区首地址内的16字节数据传送到4200H目标RAM区。
3、设计思想程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。
源数据块和目的数据块在存储器中可能有三种情况,如下图:对于两个数据分离的情况,如图(a),数据的传送从数据块的首地址开始,或者从数据块的末地址开始均可。
但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。
可以得出如下结论:当源数据首址>目的块首址时,从数据块首址开始传送数据。
当源数据首址<目的块首址时,从数据块末址开始传送数据4、程序框图5、实验步骤调试运行入口地址为3060H的程序,检查4100H~410FH中内容是否和4200H~420FH中内容完全一致。
微机原理实验实验⼀8086指令使⽤实验⽬的通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。
3、BCD码,ASCII码及⽤⼗六进制数表⽰⼆进制码的⽅法。
4、8086寄存器: AX,BX,CX,DX,F,IP。
内容及步骤⼀、DEBUG 命令使⽤1、键⼊ DEBUG 进⼊ DEBUG 控制状态,显⽰提⽰符 '- '。
2、⽤命令 F100 10F 'A' 将'A'的ASCII码填⼊内存。
3、⽤命令 D100 10F 观察内存中的⼗六进制码及屏幕右边的ASCII字符。
4、⽤命令 F110 11F 41 重复上⼆项实验,观察结果并⽐较。
5、⽤命令 E100 30 31 32 …… 3F将30H-3FH写⼊地址为100开始的内存单元中,再⽤D命令观察结果,看键⼊的⼗六进制数是什么字符的ASCII码?6、⽤H命令检查下列各组⼗六进制数加减结果并和你的⼿算结果⽐较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758H,347FH7、⽤R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
8、⽤R命令将AX,BX内容改写为1050H及23A8H。
⼆、8086常⽤指令练习1、传送指令1)⽤A命令在内存100H处键⼊下列内容:-A 0100↙****:0100 MOV AX,1234↙****:0103 MOV BX,5678↙****:0106 XCHG AX,BX↙****:0108 MOV AH,35↙****:010A MOV AL,48↙****:010D MOV DX,75AB↙****:010F XCHG AX,DX↙****:0111 ↙-注:****为段寄存器CS的值,是由计算机⽣成的;↙为回车操作。
微机原理实验报告实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容将两个多位十进制数相加, 要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1.DATA2为首的5个内存单元中(低位在前), 结果送回DATA1处。
三、程序框图图3-1四、参考程序清单程序名: XIANGJ.ASMDATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?) DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC N EARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30HSUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP A D2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30H DEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五: 结果分析这次试验依次将相加数和被相加数存入AL, BL, 依次从低位向高位相加, 然后把结果放在内存中, 根据程序走向, 相加的结果依次放在内存地址DS:0000到DS:0004的位置上, 和我们实验预期结果一样。
软件实验报告软件实验一一、实验目的1.熟悉软件实验的基本步骤和汇编程序的调试方法;2.了解内存块的移动方法;3.了解将十六进制数转换成ASCII值的方法。
二、实验原理用MOV和MOVX指令可以进行数据的赋值和移动,用循环可以完成大量数据的复制。
三、实验内容及步骤1、软件设置为模拟调试状态,在所建的Project文件中添加例程1的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。
打开CPU窗口,观察CPU窗口各寄存器的变化。
打开View菜单中的Memory Window,可以观察内部RAM、外部RAM的数据和程序存储器中的程序。
在Address窗口输入X:8000H后回车,观察8000H-800FF起始的256个字节单元的内容。
2、新建一个Project文件,添加例程2的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。
打开View菜单中的Memory Window,在Address 窗口的Memory#1输入X:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,观察外部RAM3000H和4000H中的内容。
3、添加将片内30H-3FH单元的内容复制片外片外1030H~103FH中的源程序,编译运行,观察比较30-3FH单元中的内容和片外1030H-103FH中的内容。
4、添加将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中的源程序,编译运行,观察结果。
5、添加求内部RAM 30H—37H单元中8个无符号数的算术和的源程序,8个无符号数设定为25H,36H,4AH,65H,7FH,82H,9BH,1DH,观察39H,38H中的数字是否分别为02H,C3H。
四、实验结果1.步骤1的结果为8000H-80FFH的内容都为1.2.步骤2的结果为3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。
微机原理实验实验⼀ MASM For Windows 的使⽤及顺序程序设计⼀、实验⽬的1、熟悉在PC机上建⽴、汇编、连接、调试和运⾏8086汇编语⾔程序的过程。
2、熟悉masm for windows调试环境及DEBUG常⽤命令的使⽤⼆、实验内容1.DEBUG常⽤命令(U、R、D、E、F、T、G、Q)的操作使⽤2.编程实现两个16位⽆符号数的加、减、乘、除运算。
有两个两字节⽆符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显⽰。
相加若有进位不存⼊存储单元。
三、实验设备PC机⼀台四、实验准备1) 分析题⽬,将程序中的原始数据和最终结果的存取⽅法确定好。
2) 画出流程图。
3) 写出源程序。
4) 对程序中的结果进⾏分析,并准备好上机调试与⽤汇编程序及汇编调试的过程。
五、实验步骤1) 输⼊源程序。
2) 汇编、连接程序,⽣成 .EXE⽂件,执⾏⽂件,检查结果。
六、学⽣实验报告的要求1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。
2) 说明程序中各部分所⽤的算法。
3) 说明主要符号和所⽤到寄存器的功能。
4) 上机调试过程中遇到的问题是如何解决的。
5) 对调试源程序的结果进⾏分析。
4) 说明标志位CF、SF和OF的意义。
DEBUG的常⽤命令1、R 显⽰或修改寄存器的内容命令格式:-R2、 D 显⽰存储单元的内容命令格式:-D[地址1, 地址2]3、E修改存储单元的内容命令格式:-E[地址1, 地址2]命令格式:-U[地址1, 地址2]5、T单步执⾏命令格式:-T6、G连续执⾏命令格式:-G[=起始地址, 结束地址]A⼩汇编命令格式:-A7、Q退出DEBUG,返回DOS实验⼀源程序 EXAM1-2 .ASMDATA SEGMENTA DB 34H,18H,2 DUP(0),’$’B DB 56H,83HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXMOV AL,AMOV BL,BADD AL,BLMOV AH,A+1MOV BH, B+1ADC AH, BHMOV A, ALMOV A+1, AHMOV CX, 0004HMOV DI, OFFSET AMOV DX, [ DI]ADD DI,03NEXT: MOV AX, DXAND AX,000FHCMP AL,0AHJB QQQADD AL, 07HMOV [DI], ALDEC DIPUSH CXMOV CL, 04SHR DX, CLPOP CXLOOP NEXTMOV DX, OFFSET AMOV AH, 09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START执⾏程序EXAM1-2·EXE,屏幕上显⽰结果:9B8A实验⼆分⽀、循环程序设计⼀、实验⽬的1) 掌握分⽀、循环程序的结构。
微机原理实验报告实验⼀DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。
⼆、实验要求1.掌握DEBUG的使⽤,调试程序。
2.读懂程序中各条指令,说明程序功能。
三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。
100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。
2.加深对指令的理解。
⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。
请编⼀程序将AX的内容和BX的内容进⾏交换。
请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。
2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。
在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。
三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。
第四章 软件实验部分实验一 两个多位十进制数相减实验一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII 码形式按顺序存放在以DA T AI和DA T A2为首的5个内存单元中(低位在前),结果送回DA T AI 处。
处。
二、实验目的:1.学习数据传送和算术运算指令的用法。
.学习数据传送和算术运算指令的用法。
2.熟悉在PC 机上建立、汇编、链接、调试和运行汇编语言程序的过程。
机上建立、汇编、链接、调试和运行汇编语言程序的过程。
三、实验步骤:连好实验箱后接通电源,连好实验箱后接通电源,打开上位机软件打开上位机软件88TE 进入软件调试界面:进入软件调试界面:点击点击点击“文件“文件\打开”打开”文文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm 。
具体操作如图所示:文件。
点击编译连接生成可执行的exe文件。
通过单步运行调试程序,打开寄存器查看其变量变化情况。
通过单步运行调试程序,打开寄存器查看其变量变化情况。
四、实验程序框图:五、实验程序:文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm DA DATA SEGMENT TA SEGMENT DA DATA1 TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)第一个数据(作为被减数) DA DATA2 TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)第二个数据(作为减数) MES1 DB '-','$' MES2 DB '=','$' DA DATA ENDS TA ENDS STACK SEGMENT ;堆栈段堆栈段 STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT TA,SS:STACK,ES:DA ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DAT T A START: MOV AX,DA TA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP ,AX MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL ;显示被减数显示被减数 MOV AH,09H LEA DX,MES1 INT 21H MOV SI,OFFSET DA T A2 MOV BX,05 ;显示减数显示减数 CALL DISPL MOV AH,09H LEA DX,MES2 INT 21H MOV SI,OFFSET DATA1 MOV DI,OFFSET DA T A2 CALL SUBA ;减法运算减法运算 MOV SI,OFFSET DA T A1 MOV BX,05 ;显示结果显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H 显示减数和被减数被减数和减数转换成十六进制数设 置 计 数 值 消除最低进位数 开 始制进位减 结果送被减数区调整偏移量 计数值-1=10 结果转换成ASCII 码字符串显示结果 结果INT 21H INT 21H MOV AX,4C00H INT 21H DISPL PROC NEAR ;显示子功能显示子功能DSI: MOV AH,02 MOV DL,[SI+BX-1] ;显示字符串中一字符显示字符串中一字符INT 21H DEC BX ;修改偏移量修改偏移量JNZ DSI RET DISPL ENDP SUBA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 SU1: SUB BYTE PTR[SI+BX-1],30H SUB BYTE PTR[DI+BX-1],30H DEC BX ;将ASCII 码表示的数字串码表示的数字串 JNZ SU1 ;转化为十六进制的数字串转化为十六进制的数字串 MOV SI,DX MOV DI,BP MOV CX,05 ;包括进位,共5位CLC ;清进单位清进单位SU2: MOV AL,[SI] MOV BL,[DI] SBB AL,BL ;带进位相减带进位相减AAS ;非组合BCD码的减法调整码的减法调整 MOV [SI],AL ;结果送被减数区结果送被减数区 INC SI INC DI ;指向下一位指向下一位LOOP SU2 ;循环循环MOV SI,DX MOV DI,BP MOV BX,05 SU3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC BX ;十六进制的数字串转化ASCII码表示的数字串码表示的数字串 JNZ SU3 RET SUBA ENDP CODE ENDS END ST ART实验二 两个数相乘的实验一、实验要求:实现十进制数的乘法,实现十进制数的乘法,被乘数和乘数均以被乘数和乘数均以ASCII 码形式存放在内存中,码形式存放在内存中,算式结果在屏幕上显算式结果在屏幕上显示出来。
试验一存储器读写实验一、存储器读写实验目的1、熟悉静态RAM的使用方法,掌握8088微机系统扩展RAM的方法。
2、掌握静态RAM读写数据编程方法。
二、实验内容对指定地址区间的RAM(2000H~27FDH)先进行写数据55AAH,然后将其内容读出再写到3000H~33FEH中。
三、实验步骤(运行实验程序)1、运行实验程序;2、稍后按RESET键退出,用存贮器读方法检查2000H~27FDH中的内容和3000~33FF中的内容应都是55AA。
四、实验程序CODE SEGMENTASSUME CS:CODESTART: MOV AX,0HMOV DS,AXMOV BX,2000HMOV AX,55AAHMOV CX,03FFHRAMW1: MOV DS:[BX],AXADD BX,0002HLOOP RAMW1MOV AX,2000HMOV SI,AXMOV AX,3000HMOV DI,AXMOV CX,03FFHCLDREP MOVSBRAMW2: JMP RAMW2CODE ENDSEND START实验二继电器控制实验一、实验目的:掌握用继电器控制的基本方法和编程。
二、实验内容1、利用8255A PB0输出高低电平,控制继电器的开合,以实现对外部装置的控制。
2、硬件线路原理如图5-23所示3、实验预备知识:现代自动化控制设备中都存在一个电子与电气电路的互相联结问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机、电磁铁、电灯等);一方面又要为电子电路的电气提供良好的电隔离,以保护电子电路和人身的安全,电子继电器便能完成这一桥梁作用。
三、连线方法1、8255A的PB0连JIN插孔。
2、将CS-8255连到Y6。
四、实验步骤1、按图连好实验线路图。
2、运行实验程序,继电器应循环吸合,L-13和L-14交替亮灭。
五、硬件线路接线图六、试验程序CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0063HIOCPT EQU 0061HSTART: MOV AL,80HMOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPTIODE2: MOV AL,01HOUT DX,ALCALL DELAYMOV AL,00HOUT DX,ALCALL DELAYJMP IODE2DELAY: MOV CX,0FFFFHDELY: LOOP DELYRETCODE ENDSEND START实验三小直流电机调速实验一、实验目的1、掌握直流电机的驱动原理。