8086实验报告
8086实现计算器实验报告

实验报告一、题目:数字计算器的汇编语言实现二、设计任务:利用8086微处理器,可编程并行通信接口芯片 8255A等相关器件在proteus中设计仿真一个简单数字计算器,利用8086汇编语言编写完成加、减、乘、除、幂运算、阶乘运算、求余运算等功能,能实现键盘十进制运算表达式的输入和显示,按“=”后输出十进制表示的运算结果。
三、需求分析:(一)根据数据的输入要求对键盘(本实验中用4X5按钮阵来代替键盘)的数据读取及运算符号读取进行定义,根据8255A的相关性质对其进行编程实现,使每一个按钮对应一个十以内的整数或者某一个运算符号。
(二)根据8255A的输出性质,选择输出端口,对其进行编程,8255A为8086微处理器与外部设备之间提供并行输入/输出的通道。
不用附加外部电路,并行接口是在多根数据线上,以数据字节/字与I/O设备交换信息。
(三)数据的显示有LED数码管显示,LED数码管有7个字符段和一个小数点段组成,每段对应一个二极管,当二极管点亮时,相应的的字符段点亮,可以进行数据的显示。
四、总体方案首先利用程序不断扫描所设的按钮键盘是不是有输入,如果没有就一直扫描,如果有就调用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现部分十进制数的加、减、乘、除、幂运算、阶乘运算、求最大公约数的运算。
运算完成后根据程序将运算的结果储存到锁存器中并显示到LED显示器上。
五、硬件设计本次实验需要的元器件有:8086微处理器、可编程并行通信接口芯片8255A、输入输出锁存器74LS373、LED数码显示管、若干按钮组成的4X5矩阵按键、若干电阻、总线等。
1、8086微处理器当引脚接高电平时,CPU工作于最小模式。
此时,引脚信号24~31的含义及其功能如下:(1)IO/M:存储器、I/O端口选择控制信号。
信号指明当前CPU是选择访问存储器还是访问I/O端口。
计组8086指令格式实验报告

编码16位模式32位模式操作)000AX EAX AL001CX ECX CL010DX EDX DL011BX EBX BL100SP ESP AH101BP EBP CH110SI ESI DH111DI EDI BHR/M字段受MOD字段控制。
若MOD=11,为寄存器方式,R/M字段将指出第二操作数所在寄存器编号。
MOD=00,01,10为存储器方式,R/M则指出如何计算存储器中操作数地址。
MOD与R/M字段组合的寻址方式见表3。
表3 各种MOD与R/M字段组合编码及有关地址的计算(16位地址模式下)MOD=11寄存器寻址MOD≠11存储寻址、有效地址的计算公式R/M W=1W=0R/M不带位移l量MOD=00带8位位移量MOD=01带16位位移量MOD=10 000AX AL000[BX+SI][BX+SI+D8][BX+SI+D16]001CX CL001[BX+DI][BX+DI+D8][BX+SI+D16]010DX DL010[BP+SI][BP+SI+D8][BP+SI+D16]011BX BL011[BP+DI][BP+DI+D8][BP+DI+D16]100SP AH100[SI][SI+D8][SI+D16]101BP CH101[DI][DI+D8][DI+D16]110SI DH110(直接寻址)[BP+D8][BP+D16]111DI BH111[BX][BX+D8][BX+D16]例如:指令MOV AH,[BX+DI+50H]。
代码格式如下。
OPCODE D W MOD REG R/M DISP—8100010 1 0 01 100 001 01010000指令码:8A6150H。
指令ADD DISP [BX] [DI],DX;DISP=4523H代码格式:OPCODE D W MOD REG R/M DISP—Lo DISP—Hi000000 0 1 10 010 001 00100011 01000101指令码为:01 91 23 45H。
8086微机原理实验报告

8086微机原理实验报告实验名称:8086微机原理实验实验目的:1.深入了解8086微处理器的内部结构和指令系统。
2.掌握汇编语言的编程方法和技巧。
3.熟悉微机系统的输入输出操作原理。
4.掌握8086微机系统的调试方法和程序调试技巧。
实验器材:1.8086微处理器芯片2.Intel 8086学习板3.编程器4.示波器5.实验箱实验步骤:1.熟悉8086微处理器的内部结构和指令系统在开始实验前,首先需要熟悉8086微处理器的内部结构和指令系统。
通过阅读教材和讲义,了解到8086微处理器采用16位结构,具有4个寄存器组,支持16种不同寻址方式的指令。
熟练掌握常用的指令系统和汇编语言的编程方法。
2.设计并编制简单的汇编程序在熟悉8086微处理器的内部结构和指令系统后,我们开始设计并编制简单的汇编程序。
本实验中,我们编写了一个简单的汇编程序,用于实现两个数的加法操作,并将结果存储在内存中。
程序中使用了mov指令将操作数送入寄存器,add指令将它们相加,再用mov指令将结果存储到内存中。
程序流程图如下所示:a. 将第一个数送入累加器A中。
b. 将第二个数送入寄存器B中。
c. 执行add指令,将A和B相加,结果保存在A中。
d. 将结果存储到内存中。
e. 程序结束。
3.调试程序并进行测试在完成汇编程序的编写后,我们需要使用调试器对程序进行调试,并进行测试。
首先,将程序加载到学习板上进行调试。
在调试过程中,我们使用示波器观察各个信号的波形,以确定程序的正确性。
通过逐步单步执行程序并观察寄存器和标志位的变化,我们验证了程序的正确性。
接下来,我们使用输入设备输入两个数,并观察输出结果是否正确。
测试结果表明程序正确实现了两个数的加法操作。
4.总结体会和改进建议通过本次实验,我们深入了解了8086微处理器的内部结构和指令系统,掌握了汇编语言的编程方法和技巧,熟悉了微机系统的输入输出操作原理,以及掌握了8086微机系统的调试方法和程序调试技巧。
实验报告——找出80868088指令系统所有指令的操作码的编码

实验二找出8086/8088指令系统所有指令的操作码的编码一、实验目的本实验旨在利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作码编码对应的指令功能。
二、试验原理:1、每条指令1~6个字节不等2、指令的第一字节为操作码,规定指令的操作类型。
第二字节规定操作数的寻址方式接着以后的3~6 字节依据指令的不同取舍。
3、第一个字节的八个二进制位中前六位为操作码的主要部分,之后一位是D字段,然后是W字段,W指出操作数类型:W=0 为字节,W=1 为字,D指出操作数的传送方向:D=0 寄存器操作数为源操作数,D=1 寄存器操作数为目标操作数。
4、用DOS的输入/输出重定向功能,让debug自动执行一批命令。
三、试验内容和步骤1、用试探法(1)打开debug,输入如下内容:-e 100 00 00 00 00 00 00-u 100 1050B5D:0100 0000 ADD [BX+SI],AL0B5D:0102 0000 ADD [BX+SI],AL0B5D:0104 0000 ADD [BX+SI],AL可以得到如下结果:结论:操作码字节前六位为000000(二进制)看来是一条ADD指令,而且只占两个字节。
记下来:指令码汇编指令---------------------------------------------------------------------0B5D:0100 0000 ADD [BX+SI],AL(2)将指令首字节变为01,重复以上实验-e 100 01 00-u 100 1010B5D:0100 0100 ADD [BX+SI],AX得到以下结果:结论:第1字节由00(二进制0000 0000)变为01(二进制0000 0001),ADD指令的第二个操作数由AL变为了AX。
AL为8位寄存器、AX为16位寄存器,印证了W字段的作用,增加一条有用的记录:指令码汇编指令-------------------------------------------------------------------------0B5D:0100 0000 ADD [BX+SI],AL0B5D:0100 0100 ADD [BX+SI],AX(3)将指令首字节变为02,重复以上实验-e 100 02 00-u 100 1010B5D:0100 0200 ADD AL,[BX+SI]得到以下结果:结论:第1字节由00(二进制0000 0000)变为02(二进制0000 0010),ADD 操作的传送方向发生转变,印证了D字段的作用。
8086汇编语言程序设计 微机实验报告

微机实验报告第一部分:8086汇编语言程序设计一、实验目的通过上机练习,初步掌握8086的指令系统,熟悉8086汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用DEBUG调试工具。
二、实验题目(一)编程实现从字符串中查找特定的字符,记录特定字符的个数,并将结果在屏幕上显示,同时退出并返回DOS。
(要求字符串从键盘上输入)1、流程图2、实验程序及注释DATA SEGMENTBUFSIZE DB 20 ;数据段ACTCHAR DB ? ;定义字符串CHARTEXT DB 20 DUP(?) ;给输入字符分配内存DB '$'CNT DB 0 ;给计数器分配内存STRING1 DB 'PLEASE INPUT THE STRING:','$'STRING2 DB 0AH,0DH,'INPUT THE WORD YOU WANT TO CHECK:','$' STRING3 DB 0AH,0DH,'THE NUMBER OF THE WORD IS:','$'DATA ENDS ;数据段结束COSEG SEGMENT ;代码段ASSUME CS:COSEG,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRING1 ;显示提示语:请输入字符串MOV AH,09H ;输出字符串STRING1INT 21HMOV DX,OFFSET BUFSIZE ;从键盘输入字符串存入BUFSIZEMOV AH,0AH ;并送显INT 21HMOV DX,OFFSET STRING2 ;显示提示语:想查询的字符是MOV AH,09H ;输出字符串STRING2INT 21HMOV AH,01H ;从键盘上输入字符到AL中并送显INT 21HMOV BX,OFFSET CHARTEXT ;将字符串首地址存入BXMOV CL,ACTCHAR ;置循环次数CX=字符串长度XOR CH,CHLP1: CMP AL, [BX] ;字符串从头开始与键入字符AL比较JZ LP2 ;相等则转入LP2INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,继续循环LP1JMP FINI ;若全部比较完毕,跳转FINILP2: INC CNT ;计数器增一INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,跳至LP1 FINI: MOV DX,OFFSET STRING3 ;显示提示语:所查询的字符个数:MOV AH,09HINT 21HMOV AL,CNT ;将计数器的值送ALAAM ;将此值转换成非压缩BCD码ADD AH,30H ;将BCD码转换为ASCⅡ码MOV DL,AH ;高位送显MOV AH,02HINT 21HMOV AL,CNT ;再将计数器的值送ALAAMADD AL,30H ;将BCD码转换为ASCⅡ码MOV DL,AL ;低位送显MOV AH,02HINT 21HMOV AH,4CH ;结束INT 21HCOSEG ENDS ;代码段结束END START ;程序结束3、运行结果PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): A↙THE NUMBER OF THE WORD IS(数量为):3↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符):9↙THE NUMBER OF THE WORD IS(数量为):0↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): S↙THE NUMBER OF THE WORD IS(数量为):1↙4、程序改进○1循环次数的改进原来的程序:MOV CX,19改进原因:此程序表明无论输入的字符串多长,即使没有达到限定的最大字符串的长度,也要循环19次。
微机原理上机实验(八+十二)实验报告 8086中断实验 步进电机实验

微机原理上机实验报告实验八:8086中断实验实验十二:步进电机实验微机原理上机实验(八)实验报告实验八:8086中断实验一、实验目的1、了解8086内部响应中断的机制;掌握中断向量的作用。
2、利用实验仪上单脉冲、74HC244电路,不使用8259,实现一个中断实例。
3、复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验内容1、编制程序:拨动单脉冲开关,“”送给8086的INTR,触发中断;8086通过INTA信号,读取中断向量;8086计数中断次数,显示于F5区的数码管上注意:给INTR高电平信号,8086就会相应中断,所以实验开始前,保证单脉冲开关给8086低电平;中断程序中,加一个较长的延时程序,在中断结束前,有时间拨动单脉冲开关,恢复给8086低电平。
三、实验原理图本实验,通过F4区的8个拨动开关,给74HC244设定中断向量;本实验的中断向量是08H,即IN7-IN0位数据是00001000。
同学可以自定义中断向量,实验程序中处理中断向量部分程序作相应调整四、实验步骤1、连线说明:B4区:CS244、BLE ——C1区:GNDB4区:RD(IO区)——A3区:INTAA3区:INTR ——B2区:单脉冲B4区:JP57(D0..D7) ——A3区:JP41B4区:JP52(IN0..7) ——F4区:JP27(1..8)D3区:CS、A0、A1 ——A3区:CS1、A0、A1D3区:PC0、PC1 ——F5区:KL1、KL2D3区:JP20、B、C ——F5区:A、B、C2、运行程序3、实验开始前,保证单脉冲开关给8086低电平;运行程序;向下拨动开关(触发中断),立即向上拨动开关,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。
五、实验代码EXTRN InitKeyDisplay:NEAR, Display8:NEAR_STACK SEGMENT STACKDW 100 DUP(?)_STACK ENDS_DATA SEGMENT WORD PUBLIC 'DATA'BUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0_DATA ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:_DATA, SS:_STACKMOV AX,_DATAMOV DS,AXMOV ES,AXNOPCALL InitKeyDisplay ;对键盘、数码管控制器8255初始化CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: LEA SI,BufferCALL Display8CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1WriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HRETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1CALL LedDisplayDELAY: PUSH BXPUSH CXPUSH DIPUSH SIMOV CX,20DELAY1: LEA SI,BufferCALL Display8loop DELAY1POP SIPOP DIPOP CXPOP BXPOP AX六、实验思考题1.绘制本实验的详细实验电路图?微机原理上机实验(十二)实验报告实验十二:步进电机实验一、实验目的1、了解步进电机的基本原理,掌握步进电机的转动编程方法2、了解影响电机转速的因素有那些二、实验内容编写程序:使用F5区的键盘控制步进电机的正反转、调节转速,连续转动或转动指定步数;将相应的数据显示在F5区的数码管上。
微机原理实验报告2011

微机原理与应用实验报告
专业:
班级:
姓名:
学号:
时间:
指导教师:
二○一一年五月改编
云南农业大学工程技术学院--------------------------微机原理与应用实验报告
实验一8086基本指令及程序结构实验报告姓名:学号:专业:年级:
1
2
3
云南农业大学工程技术学院--------------------------微机原理与应用实验报告
实验二编程及汇编实验报告
姓名:学号:专业:年级:
4
5
6
云南农业大学工程技术学院--------------------------微机原理与应用实验报告
实验三8255A并行口实验报告
姓名:学号:专业:年级:
7
8
云南农业大学工程技术学院--------------------------微机原理与应用实验报告
实验四继电器控制实验报告
姓名:学号:专业:年级:
9
10。
8086微机汇编实验报告

电梯模拟实验一、实验目的通过综合实验使学员复习并熟练掌握各个模块电路功能、基本原理、线路连接和驱动方法。
自己编写嵌入式代码进行驱动,掌握相关的程序设计、电路测试的基本能力。
通过动手实践进一步加深对理论知识的理解,提高动手能力。
二、实验原理1.使用模块:本实验使用了8254、8255、七段数码管、4*4键盘、步进电机、喇叭6大模块来进行模拟电梯的综合实验。
2.连接电路:(1).使用8255的C口的PC0~PC7连接4*4键盘的行3~列0,接收4*4键盘输入;(2).将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0接+5V,S1~S3接GND,编程实现在其显示电梯所处的楼层;(3).使用8255的B口的PB0~PB3分别与步进电机的驱动输入端BA~BD相连,编程实现根据键盘输入实现顺时针(反时针)转动;(4).8254的CLK0接1MHz时钟,GATE0接8255的PB5,OUT0和8255的PB4分别接与门的两个输入端A和B,与门输出端Y连接喇叭,编程实现电梯到达所要求的楼层后发出设定的声音进行提示,具体实验电路如下图.3.接线:4.程序流程三、关键点及难点1.关键点(1).8255的控制方式8255是通用并行接口芯片,但在具体应用时,要根据实际情况选择工作方式,连接硬件电路(外设),待进行初始化编程之后才能成为某一专用的接口电路。
8255的初始化编程比较简单,只需要一个方式控制字就把3个端口设置完成。
方式控制字决定端口A、B和C的工作方式,如下图所示。
(2).I/O端口值的读写实验中,会对大量的I/O端口进行读写操作,我们通过I/O端口对相关的硬件进行数据的读写,在进行数据读写的过程中,要清楚相关的函数操作以及写入的bit位的值对硬件起到怎样的控制。
下面是C语言方式对I/O端口读写进行操作的相关函数:(3).七段数码管工作原理实验所用的七段数码管为共阴型,段码采用同相驱动,输入加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在EMU8086下环境单步调试程序实验报告1.实验时间:2013年4月23日2.实验地点:图书馆3.实验名称:在EMU8086下环境单步调试程序4. 实验目的:(1)熟悉EMU8086仿真环境(2)在EMU8086环境下单步调试给出的程序,加深对重要指令的理解5.实验所用设备与软件:硬件:PC机一台;软件:EMU80866.实验方法、过程与实验结果的分析完整代码如下(已补充,已修改)org 100h ; set location counter to 100h;mov指令mov CL,23Hmov CH,45H ;(cx)=4523Hmov AX,1234H ;(AX)=1234Hmov WORD ptr[300H],0180H ;( 300H)=0180Hmov bx,[300H] ;(bx)=0180Hmov [300H],cx ;(300H)=4523Hmov ax,ds ;(ax)=0700Hmov ds,bx ;(ds)=0180Hmov es,[300H] ;(es)=0000Hmov [300H],ss ;(ss)=0700mov bx,cs ;(bx)=0700mov [300H],cs ;(300H)=0700目的操作数不允许为CS段寄存器;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;XCHG指令MOV AX,1234H ;(AX)=1234HMOV BX,3456H ;(BX)=3456HXCHG AX,BX ;(AX)=3456H,(BX)=1234HMOV AX,1234H ;(AX)=1234HMOV WORD ptr[300H],0100H;( 300H)=0100HXCHG AX,[300H];(AX)=0100H,( 300H)=1234H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV BX,OFFSET TABLEMOV AL,15XLAT ;(AL)=225H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;堆栈指令MOV AX,1234H ;(AX)=1234HPUSH AXPOP BX;(BX)=1234HMOV WORD ptr[300H],0100H;(300H)=0100HPUSH [300H]POP BX ;(BX)=0100H POP弹栈指令为字操作;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;地址传送指令MOV BX,1234H;(BX)=1234HLEA AX,10H[BX];(AX)=1244H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;输入/输出指令mov ax, 30303Dout 199, ax;199端口是十进制LED数字模拟端口in al, 7 ;7号端口是马达的准备好位;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;加/减法运算MOV AX,1234H;(AX)=1234HMOV WORD PTR[300H],0100H;(300)=0100HADD AL,[300H]SUB AL,[300H] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;加1/减1指令MOV CX,10H ;CX=0010HINC CX ;CX=0011HDEC CX ;CX=0010H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;整数变反指令MOV AL,0f1H;(AL)=F1HNEG AL ;(AL)=0fHMOV AL,80H ;(AL)=80HNEG AL ;(AL)=80H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;比较指令MOV AX,1234H ;(AX)=1234HMOV WORD PTR[300H],0100H;(300H)=0100HCMP AX,[300H] ;CF=0,ZF=0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;乘法指令;单乘法指令MOV AX,1234H ;(AX)=1234HMOV WORD PTR[300H],0100H;(300H)=0100H MUL WORD PTR[300H]MOV AX,1234H ;(AX)=1234H MOV WORD PTR[300H],0100H;(300H)=0100H IMUL WORD PTR[300H]MOV AX,45H ;(AX)=0045H MOV BX,63HMUL BX ;(DX:AX)=1AAFH;双乘法指令MOV AX,8885H ;(AX)=8885HMOV BX,63HIMUL BX ;(DX:AX)=ffd1cb6fH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;除法指令MOV AX,0400HMOV byte PTR[300H],0b4HDIV byte PTR[300H];(AL)=05H (AH)=7CH MOV AX,0400HMOV BL,0b4HIDIV BL ;(AL)=0f3H (AH)=024H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;数据宽度变宽交换指令MOV AL,12HCBW ;(AX)=0012HCWD ;(DX:AX)=00000012HMOV AL,82HCBW ;(AX)=ff82HCWD ;(DX:AX)=ffffff82H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BCD调整MOV AL,39HMOV BL,36HADD AL,BLAAADAASUB BL,ALAASDASMOV AL,07HMOV BL,06HMUL BLAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;逻辑运算指令mov AL,0aahAND AL,0fhor al,0fhxor al,alnot alTest al,02h ;ZF=0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;移位指令mov ax,2SHL AX,1 ;SALMOV CL,2SHL AX,CL ;SALMOV AL,8AhSHR AL,1 ;(AL)=45HSAR AL,1SHR AL,2xor ax,ax ; CF=0mov AX,8CFFhROL AX,1;CF=1 SF=0 ZF=0 OF=1 PF=0xor ax,ax ; CF=0mov AX,8CFFhROR AX,1;CF=1 SF=1 ZF=0 OF=0 PF=0xor ax,ax ; CF=0mov AX,8CFFhRCL AX,1;CF=1 SF=0 ZF=0 OF=1 PF=1xor ax,ax ; CF=0mov AX,8CFFhRCR AX,1;CF=1 SF=0 ZF=0 OF=1 PF=1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;串操作指令LEA SI,FIRST ;mov si,offset FIRSTLEA DI,SECOND ;mov di,offset Secondmov cx,10CLD ;done1: movsw ;movs Second,FIRSTloop done1LEA SI,FIRST ;mov si,offset FIRSTLEA DI,SECOND ;mov di,offset Secondmov cx,10 ;mov bx,0CLD ;done2: LODSW ;LODS FIRSTadd bx,ax ; 将First数组中的数相加存到bx中STOSW ;STOS SECONDloop done2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV AX,14c6hMOV BX,80DChCMP AX,BXJNO PROG1JNC PROG2JMP PROG3PROG1: mov CX,1JMP PROG4PROG2: mov CX,2JMP PROG4PROG3: mov CX,3PROG4: mov dl,'O'mov AH,2int 21H ;输出'O'mov dl,'K'int 21H ;输出'K'ret;TABLE存放着0~15的平方TABLE DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 FIRST DW 1,2,3,4,5,6,7,8,9,10SECOND DW 10 DUP(0)7.实验总结通过这次实验,初步了解了EMU8086模拟器环境,及其使用方法。
在刚使用模拟器时,不知道如何调试,如何进行单步跟踪,如何根据程序每一部的运行来知道运行结果,慢慢自己调试,看书,上网查资料和别人讨论,才知道了解会使用EMU8086模拟器编译,并初步知道通用寄存器,标志寄存器的显示,跟踪代码如何运行。
EMU8086编译源代码,并在模拟器上一步一步的执行。
可视化界面易于查看。
可以在执行程序的同时可观察寄存器,标志位和内存。
算术和逻辑运算单元显示中央处理器内部的工作情况。
通过实验中和看书,了解到应用伪指令能更好地组织汇编语言程序。
其中ORG指令,开始执行的时候,将某段语言装载到内存中的哪个地址,在改变数值之后,内存也随之改变。
另外在程序最后。