东北大学微机原理上机报告(全)
微机原理实验报告
专业班级通信1301 姓名张麒学号 20135440 实验题目简单IO扩展日期 2015.5.25
实验一、简单I/O扩展实验
一、实验目的
1、熟悉74LS273、74LS244芯片,并了解其应用方法。
2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。
二、实验设备
MUT-III型实验箱、计算机一套。
三、实验内容
逻辑电平开关的状态通过74LS244输入,然后通过74LS273锁存输出,利用
发光二极管LED显示输出的状态。
根据实验框图自编程序。
244端口地址04A0H,273端口地址04B0H。
说明:程序的起始地址为0100H,编写程序时,用伪指令定义此位地址,即:ORG 0100H。
这时, CS=0100H,IP=0100H。
代码段、数据段、堆栈段在同一个64K的地址空间中。
四、简单I/O的工作原理
本实验用到两部分电路:开关量输入输出电路、简单I/O口扩展电路。
开关量输入输出电路:开关量输入电路由8只开关组成,每只开关有两个位置H和L,一个位置代表高电平,一个位置代表低电平。
对应的插孔是:K1~K8。
开关量输出电路由8只LED组成,对应的插孔分别为LED1~LED8,当对应的插孔接低电平时,对应的发光二极管点亮。
简单I/O口扩展电路:输入缓冲电路由74LS244组成,输出锁存电路由上升沿锁存器74LS273组成。
74LS244是一个扩展输入口,74LS273是一个扩展输出口,同时它们都是一个单向驱动器,以减轻总线的负担。
74LS244的输入信号由插孔IN0~IN7输入,插孔CS244是其选通信号,其它信号线已接好;74LS273的输出信号由插孔O0~O7输出,插孔CS273是其选通信号,其它信号线已接好。
注:双击鼠标,可放大图形
五、实验步骤
1、实验连线:
C PLD单元的输出端插孔CS0、CS1分别与244/273单元的片选信号CS244、CS273相连;
电平开关的输出端KK1~KK8分别与244/273单元的IN0~IN7对应连接;
244/273单元的输出端O0~O7分别与发光二极管的输入端LED 1~L ED8对应连接。
2、编辑程序
启动:首先打开实验装置的电源开关,这时实验装置上的六位数码管显示1996-7字样,过几秒钟会显示P-。
接着点击桌面TECH图标,运行8086实验系统。
在窗口中,选择通讯口COM3(接USB口)或COM1(接串口),波特率9600,点击确定,同时按实验装置RST键,进入连机操作模式,这时在实验装置上会显示C- 字样。
编辑:点击快捷图标[新建],进入编辑系统。
将编写好的源程序逐一输入,然后保存。
这时在桌面上就会产生以new .asm 命名的文件。
编译运行:选择[编译]菜单,点击[编译或连接],对源程序进行汇编、连接,这时在屏幕左下方的窗口有信息显示:程序下传成功,编译,连接完成;然后点击快捷图标RUN,即运行程序。
3、调试通过后,全速运行程序,观看实验结果。
4、编写实验报告,完成思考题与练习。
六、实验框图
开始
初始化
读输入至AL
输出AL
结束
七、思考与练习
1、KK1-KK4开关向上,让LED1-LED4发光二极管灯灭,而其它发光二极管灯保持不变,程序如何修改。
2、74LS244、74LS273的片选信号可以改变,若244/273的片选信号改为与CPLD单元中的CS2、CS3(04c0h、04d0h)相连,应如何修改程序中相应地址。
3、理解程序清单中IN和OUT指令的作用。
4、写出实验源程序,并给出注释。
一.实验源程序
CODE SEGMENT
ASSUME CS:CODE
ORG 100H ;伪指令用于指示如何按段组织程序和使用存储器
START:MOV DX,04A0H ;把74LS244的地址写到DX里
IN AL,DX ;把DX上的内容读数据到CPU中的AL里
MOV DX,04B0H ;把74LS273的地址写到DX里
OUT DX,AL ;把AL上的数据写到CPU里
JMP START ;无条件转移到START指令,循环执行源程序
CODE ENDS ;伪指令用于指示如何按段组织程序和使用存储器
END START
二.思考题
1.KK1-KK4开关向上,让LED1-LED4发光二极管灯灭,而其它发光二极管灯保持不变,程序如何修改。
源程序:
CODE SEGMENT
ASSUME CS:CODE ;伪指令用于指示如何按段组织程序和使用存储器
ORG 100H
START:MOV DX,04A0H ;把74LS244的地址写到DX里
IN AL,DX ;把DX上的内容读数据到CPU中的AL里
XOR AL,0FH ;使用异或指令将DX低四位取反,使其开关向上时电平反转
MOV DX,04B0H ;把74LS273的地址写到DX里
OUT DX,AL ;把AL上的数据写到CPU里
JMP START ;无条件转移到START指令,循环执行源程序
CODE ENDS ;伪指令用于指示如何按段组织程序和使用存储器
END START
2.74LS244、74LS273的片选信号可以改变,若244/273的片选信号改为与CPLD 单元中的CS2、CS3(04c0h、04d0h)相连,应如何修改程序中相应地址。
CODE SEGMENT
ASSUME CS:CODE ;伪指令用于指示如何按段组织程序和使用存储器
ORG 100H
START:MOV DX,04C0H;把74LS244的地址写到DX里
IN AL,DX ;把DX上的内容读数据到CPU中的AL里
MOV DX,04D0H;把74LS273的地址写到DX里
OUT DX,AL ;把AL上的数据写到CPU里
JMP START ;无条件转移到START指令,循环执行源程序
CODE ENDS ;伪指令用于指示如何按段组织程序和使用存储器
END START
3.理解程序清单中IN和OUT指令的作用。
OUT 和 IN 在汇编中是端口读写操作指令。
IN 将指定端口的内容送到累加器。
OUT 将累加器中的内容送入指定端口。
执行输入指令时,CPU可以从一个8位端口读得1个字节到AL中,也可以从两个连续的8位端口读得1个字到AX中;执行输出指令时,CPU可以将AL中的1个字节写到一个8位端口中,或者将AX中的1个字写到两个连续的8位端口中。
Welcome !!! 欢迎您的下载,资料仅供参考!。
微机原理汇编语言上机实验报告
微机原理汇编语言上机实验报告-CAL-FENGHAI.-(YICAI)-Company One1第三次上机实验报告一.实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。
2.掌握算术运算指令的应用。
3.掌握子程序的设计方法。
4.掌握DOS功能的调用方法。
二.实验仪器586微机一台三.实验内容有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。
编程要求及提示:[1] 参加排序的数据及个数由学生自己定义。
[2] 要将排序前的数组和排序后的数组在屏幕上显示出来。
四.给出实验内容对应的源程序及流程N = 50STACK SEGMENT STACK 'STACK'DW 100H DUP()TOP LABEL WORDSTACK ENDSDATA SEGMENTDATABUF DW NDB N DUP()ORIGINAL DB 13,10,13,10,'THE ORIGINAL DATA:$'ORDERED DB 13,10,10,13,'THE ORDERED DATA:$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOP;随机数据MOV CX,DATABUFLEA SI,DATABUF+2MOV BL,12MOV AL,14L:MOV [SI],ALINC SIADD AL,BLLOOP LLEA DX ,ORIGINALMOV AH,9INT 21HCALL DISPAL;下面给数据排序程序MOV CX,DATABUFDEC CXLEA SI,DATABUF+2ADD SI,CX; SI指向数据区末地址L1:PUSH CXPUSH SIL2:MOV AL,[SI]CMP AL,[SI-1]JBE NOXCHGXCHG AL,[SI-1]MOV [SI],ALNOXCHG:DEC SILOOP L2POP SIPOP CXLOOP L1LEA DX,ORDEREDMOV AH,9INT 21HCALL DISPALEXITPROC:MOV AH,4CH;结束程序MOV AH,1INT 21HDISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DATABUF+2MOV CX,NDISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1CALL CHANG ;------------------------------------------------MOV AH,2MOV DL,ALINT 21HMOV AL,[DI]AND AL,0FHCALL CHANG;-------------------------------------------------MOV AH,2MOV DL,ALINT 21HMOV AH,2MOV DL,20HINT 21H ;为了让结果看得清楚,让显示的数用空格空开 INC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCHANG PROC NEARCMP AL,10JNGE CHANG1ADD AL,7CHANG1:ADD AL,30HRETCHANG ENDPCODE ENDSEND START五.实验心得在实验过程中出现了类型不匹配的错误,归根结底还是对知识的掌握熟悉度不够;再者由于初次上机编写一个完整的汇编程序难免会出现这样或那样的问题,但在老师和同学的帮助下最终完成了这个程序的编写运行调试,收获颇丰。
《微机原理与接口技术》上机报告
《微机原理与接口技术》上机报告系部:指导教师:学号:____________姓名:____________一、上机时间与地点2013年10月28日下午7,8节二、上机目的学习运用DEBUG软件观察寄存器,内存单元;练习数据传送指令。
三、上机内容运用轻松汇编软件上机调试程序;练习数据传送指令。
四、程序举例举例:MOV AL,10HMOV BL,11H完整程序举例如下DATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,35HMOV BL,21HMOV AX,4C00HINT 21HCODE ENDSEND START五、调试过程在调试过程中没有出现错误。
六、运行结果经汇编,链接,执行步骤,执行程序。
七、收获与改进通过本次上机练习,了解了汇编软件轻松汇编的安装与应用,学习了数据传送指令的正确使用。
一、上机时间与地点2013年10月28日晚上9,10节二、上机目的熟悉编辑源程序,汇编,链接,执行四个步骤,并验证相关程序三、上机内容练习SUB指令的应用四、程序举例STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTV AR1 DW 7654HV AR2 DW 2345HRESULT DW ?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART: MOV AX,DATASMOV DS,AXMOV AX,V AR1SUB AX,V AR2MOV RESULT,AXMOV AX,4C00HINT 21HCODES ENDSEND START五、调试过程刚开始编译时出现了错误,经观察是在使用数据传送指令MOV 时,因疏忽输错了指令字母从而导致了编译错误,经更改调试之后编译成功。
微机原理上机实验(八+十二)实验报告 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区的数码管上。
东北大学_微机原理实验报告及答案_8255并行接口
微机原理实验报告
专业班级姓名学号
实验题目日期
实验二:并行接口8255A实验
一、实验目的
熟悉8255A的工作原理及应用方法;掌握其接口电路设计及编程方法。
二、实验设备
MUT-III型实验箱、计算机一套。
三、实验内容
8255A的A口作为输入口,与逻辑电平开关相连。
8255A的B口作为输出口,与发光二极管相连。
编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
四、实验原理
原理:本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。
开关量输入输出电路看实验一介绍
8255A可编程并口电路。
微机原理上机实验报告
说明:1. 将本文档改名为‚学号_姓名_班级_微机原理上机.doc‛,并按以下说明完成本次上机内容;2. 请各班课代表将本班上机作业收齐并压缩为‚微机原理_上机_班级.rar‛;3. 请课代表在第10周末(2014.5.4)前将本班上机作业发送到ustblili@12中,邮件标题为‚微机原理_上机_班级‛。
汇编语言开发工具使用简介① 打开‚轻松汇编‛应用程序,工作界面如下图所示:② 点击工具栏中的图标,将系统自动生成的汇编语言源程序文件更名并保存在合适的路径下;③ 在编辑区输入你编写的程序,并保存;④ 点击工具栏中的图标,进行编译。
如果源程序有误,在下方输出窗口提示错误信息,需要修改后再进行编译;如果无误,输出窗口提示‚编译成功‛;⑤ 点击工具栏中的图标,进行链接。
如果无误,输出窗口提示‚链接成功‛;⑥ 点击工具栏中的图标,运行程序;如有结果输出,即可在命令窗口中看到输出结果。
⑦ 如需调试程序,可设置断点后,点击工具栏中的图标,在界面左侧看到各寄存器的内容,如下图所示。
实验内容和实验要求 1.DOS 功能调用(1) 键盘输入屏幕显示编写程序,实现键盘输入屏幕显示实验。
即:当程序运行时,每从键盘输入一个字符,就在屏幕上显示一个字符,直到输入‚$‛字符,则退出程序。
程序源码:(请填入程序中缺失的部分)运行结果截图:(2) 输入小写字母输出大写字母编写程序,实现小写输入大写输出功能。
即:由键盘输入一个小写字母,在屏幕上显示一个与之对应的大写字母。
注意非小写字母输入的问题。
程序源码:(请填入程序中缺失的部分)CODE S EGMENTASSUMECS:CODE START: MOV AH, 1INT21HC MP A L,‛$‛ JNZ S TART MOVAH,4CH INT21HCODEENDS ENDS TART运行结果截图:CODE S EGMENT ASSUMECS:CODES TART:;代码段;****编写代码实现小写字母输入,大写字母输出功能**** M OV AH,1INT 21HCMPA L,’a’ J B STOP CMPA L,‘z’ J A STOP S U B A L ,20H M OV DL,AL M OV AH,2INT 21H;*******************自行编写代码结束*************** STOP:MOVAX,4C00H INT 21HCODEENDSEND S TART;退出程序(3) 凯撒密码设计程序,输入一个字符串,按明文右移三位的移位加密方式,实现对字符串的凯撒加密,并将结果输出到屏幕上。
微机原理上机报告
《微机原理》上机实验报告1.比较AL,BL,CL中带符号数的大小,将最小的数放于AL中(用JG转换)。
1)流程图2)代码:data segmentd1 db 33hd2 db 23hd3 db 84hdata endscode segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov al,d1mov bl,d2mov cl,d3cmp bl,aljg bbbxchg bl,albbb: cmp cl,almov ah,4chint 21hcode endsend start2.比较buffer开始10个数中最大的偶数,将其存入AL中。
1)流程图2)代码:data segmentbruffer db 54h,48h,26h,46h,37h,49h,62h,55h,79h,16h data endscode segmentassume cs:code,ds:databegin:mov ax,datamov ds,axlea si,bruffermov cx,9mov al,[si]test al,01hjnz nextinc siag: test byte ptr[si],01h ; byte和ptr中间有空格 jnz nextcmp al,[si]jnc nextmov al,[si]next: inc sidec cxjnz agtest al,80h ;测试低位的正负值jz llmov ah,0ffh ;负值用补码表示ll: mov ah,0 ;为正值高位赋0mov ah,4chint 21hcode endsend begin3.将两个32位数相乘。
12)代码:data segmentd1 dd 12345678hd2 dd 87654321hd3 dw ?,?,?,? ;dw不能用“?”data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov bx,d3lea si,d1lea di,d2mov ax,[si]mul word ptr[di]mov [bx],axmov [bx+2],dxmov ax,[si+2]mul word ptr[di]add [bx+2],axadc [bx+4],dxadc word ptr[bx+6],00hmov ax,[si]mul word ptr[di+2]add [bx+2],axadc [bx+4],dxadc word ptr[bx+6],00hmov ax,[si+2]mul word ptr[di+2]add [bx+4],axadc [bx+6],dxadc word ptr[bx+8],00hmov ah,4chint 21hcode endsend start4.将(DX,AX)中32位无符号数左移四位,低四位用0填补,高四位存入CH的低四位中。
(完整word版)东北大学_微机原理实验报告及答案_8253定时计数器
code segment
assume cs:code
org 100h
start: mov dx,04a6h
mov al,36h ;通道0
out dx,al
mov dx,04a0h
mov al,00h
out dx,al
mov al,40h
out dx,al
mov dx,04a6h
mov al,76h ;通道1
思考题
1
code segment
assume cs:code
org 100h
start: mov dx,04a6h
mov al,70h
out dx,al
mov dx,04a2h
mov al,02h
out dx,al
mov al,0h
out dx,al
jmp $
code ends
end start
2
code segment
out dx,al
mov dx,04a2h
mov al,02h
out dx,al
mov al,0h
out dx,al
mov dx,04a6h
mov al,0b6h ;通道2
out dx,al
mov dx,04a4h
mov al,2h
out dx,al
mov al,00h
out dx,al
:GATE信号无输入时为高电平
8253定时器/计数器电路
四、实验连线
1、实验连线:
CS0CS8253 CLK48253CLK0 OUT08253CLK1 OUT18253CLK2
OUT2示波器或发光二级管;
各通道门控信号GATE+5V
微机原理上机实验报告
微机原理上机实验报告实验一基本输入/输出实验:本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入/输出功能。
8255基本输入/输出实验参考接线图如图所示。
流程图:操作步骤:按图示连好线路,在TDPIT中输入如下程序,编译、连接、运行。
DATA SEGMENTCS0 EQU 300OHMY8255_A EQU CS0+00HMY8255_B EQU CS0+01HMY8255_C EQU CS0+02HMY8255_MODE EQU CS0+03HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV DX,3003HMOV AL,10000010BOUT DX,ALTEST_IT:MOV DX,3001HIN AL,DXMOV DX,3000HOUT DX,ALJMP TEST_ITCODE ENDSEND START实验现象:闭合开关,对应控制灯泡发光。
实验二流水线指示灯显示实验:首先分别将A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,在送到端口上,这样循环下去,从而实现流水灯的显示。
8255流水灯显示实验参考接线图如图所示。
流程图:操作步骤:按图示连好线路,在TDPIT中输入如下程序,编译、连接、运行。
DATA SEGMENTCSO EQU 3000HA EQU CSO+0000HB EQU CSO+0001HC EQU CSO+0002HM EQU CSO+0003HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXOR AX,AXMOV AL,10000000BMOV DX,MOUT DX,AL;MOV DX,B;IN AL,DXL1:MOV AL,00001000BMOV DX,AOUT DX,ALMOV AL,00000001BMOV DX,BOUT DX,ALMOV CX,00FFHC1: MOV BX,CXMOV CX,0FFFFHD1:LOOP D1MOV CX,BXLOOP C1MOV AL,00000100BMOV DX,AOUT DX,ALMOV AL,00000010BMOV DX,BOUT DX,ALMOV CX,00FFHC2: MOV BX,CXMOV CX,0FFFFHD2:LOOP D2MOV CX,BXLOOP C2MOV AL,00000010BMOV DX,AOUT DX,ALMOV AL,00000100BMOV DX,BOUT DX,ALMOV CX,00FFHC3: MOV BX,CXMOV CX,0FFFFHD3:LOOP D3MOV CX,BXLOOP C3MOV AL,00000001BMOV DX,AOUT DX,ALMOV AL,00001000BMOV DX,BOUT DX,ALMOV CX,00FFHC4: MOV BX,CXMOV CX,0FFFFHD4:LOOP D4MOV CX,BXLOOP C4JMP L1MOV AX,4C00HINT 21HCODE ENDSEND START实验现象:灯泡如流水般从左至右依次流动发光,并始终保持在同一时间只有一个灯亮着。
微机原理上机报告
4.2利用移位、传送和相加指令实现AX的内容扩大10倍。
(一)实验思路及流程图(二)实验结果及调试问题(三)实验程序DATAS SEGMENTDATAS ENDSSTACKS SEGMENTDW 100H DUP(?)TOP LABEL WORDSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AX,0001HMOV BX,AXMOV CL,3SHL BX,CLSHL AX,1ADD AX,BXMOV AH,4CHINT 21HCODES ENDSEND START4.3在缓冲区VAR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果VAR中保存的为有符号数,再编写程序将其按递减关系排列。
在无符号数的情况下(一)实验思路及流程图(二)实验结果及调试问题VAR DW 5,3,7调试问题:开始未输入VAR的地址,直接输入了d,出现了不符的结果。
(三)实验程序STACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXLEA SI,VARMOV AX,[SI]CMP AX,[SI+2]JG L1XCHG AX,[SI+2]MOV [SI],AXL1: ;A大于等于B的情况MOV AX,[SI+2]CMP AX,[SI+4]JG L2XCHG AX,[SI+4]MOV [SI+2],AXL2: ;A大于C的情况MOV AX,[SI]CMP AX,[SI+2]JG L3XCHG AX, [SI+2]MOV [SI],AXL3:MOV AH,4CHINT 21HCODES ENDSEND STARTVAR是有符号数时(一)实验思路及流程图(二)实验结果及调试问题(三)实验程序DATAS SEGMENTVAR DW 1,-2,3DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXLEA SI,VARMOV AX,[SI+4]CMP AX,[SI+2]JB L1XCHG AX,[SI+2]MOV [SI+4],AXL1:MOV AX,[SI+2]CMP AX,[SI]JB L2XCHG [SI],AXMOV [SI+2],AXL2:MOV AX,[SI+4]CMP AX,[SI+2]JB L3XCHG [SI+2],AXMOV [SI+4],AXL3:MOV AH,4CHINT 21HCODES ENDSEND START4.5在变量VAR1和VAR2中分别保存有两个字节型的正整数,编写完整的汇编语言程序实现。
NEUQ微机原理实验报告
cmp al,09
jnz set
mov ax,0000
mov [di],al
mov [di+1],ah
jmp loop1
set:mov ah,01
int 16h
jne exit ;有键按下则转exit
mov ax,word ptr [di]
inc al
aaa
mov [di],al ;al为十位
mov si,offset led ;置led数码表偏移地址为SI
add si,bx ;求出对应的led数码
mov al,byte ptr [si]
mov dx,io8255c ;自8255A的口输出
out dx,al
mov al,byte ptr bz ;使相应的数码管亮
mov dx,io8255a
start:mov ax,data
mov ds,ax
mov dx,io8255b ;将8255设为A口输出
mov al,80h
out dx,al
mov di,offset buffer1 ;设di为显示缓冲区
loop2:mov bh,02
lll:mov byte ptr bz,bh
push di
dec di
out dx,al
push cx
mov cx,3000;如果显示过快,可更改cx值为最大0ffffh
delay:loop delay ;延时
pop cx
mov bh,byte ptr bz
shr bh,1
jnz lll
loop loop2 ;循环延时
mov ax,word ptr [di]
cmp ah,09
