北京化工大学微机原理汇编实验报告

合集下载

微机原理实验报告册(3篇)

微机原理实验报告册(3篇)

第1篇一、实验目的1. 理解和掌握微机的基本组成和工作原理;2. 熟悉微机硬件设备和实验仪器的使用方法;3. 提高动手实践能力,培养解决实际问题的能力;4. 深入理解微机原理课程内容,为后续课程学习奠定基础。

二、实验内容1. 微机系统认识实验2. 微机硬件组成实验3. 微机指令系统实验4. 微机寻址方式实验5. 微机程序设计实验6. 微机接口技术实验三、实验仪器与设备1. 微机原理实验箱2. 示波器3. 数字万用表4. 计算机一台5. 实验指导书四、实验步骤与内容1. 微机系统认识实验(1)观察实验箱的结构,了解各个模块的功能;(2)熟悉实验箱的电源、复位、运行等按钮的使用方法;(3)学习微机系统的工作流程,包括加电、复位、启动等过程;(4)观察微机系统启动后的运行状态,了解各个模块的协同工作。

2. 微机硬件组成实验(1)观察实验箱的CPU、内存、I/O接口等硬件模块;(2)学习CPU的内部结构,包括寄存器、控制单元、运算单元等;(3)学习内存的存储原理,了解ROM、RAM等存储器的特点;(4)学习I/O接口的工作原理,了解中断、DMA等传输方式。

3. 微机指令系统实验(1)学习微机指令系统的基本格式,包括操作码、地址码等;(2)掌握微机指令系统的寻址方式,包括立即寻址、直接寻址、间接寻址等;(3)编写简单的汇编语言程序,实现加、减、乘、除等运算;(4)学习微机中断处理过程,了解中断向量表、中断服务程序等概念。

4. 微机寻址方式实验(1)学习微机寻址方式的基本概念,包括直接寻址、间接寻址、寄存器寻址等;(2)编写程序,实现不同寻址方式下的数据访问;(3)观察不同寻址方式对程序执行速度的影响。

5. 微机程序设计实验(1)学习汇编语言程序设计的基本方法,包括数据定义、指令编写、程序结构等;(2)编写简单的程序,实现数据交换、排序等操作;(3)学习微机程序的调试方法,包括单步执行、断点设置等。

6. 微机接口技术实验(1)学习微机接口技术的基本概念,包括并行接口、串行接口等;(2)观察实验箱中的并行接口、串行接口等模块,了解其工作原理;(3)编写程序,实现数据在并行接口、串行接口之间的传输;(4)学习微机中断处理在接口技术中的应用。

微机原理与汇编语言实验报告

微机原理与汇编语言实验报告

微机原理与汇编语言实验报告学号:********班级:*****姓名:*****指导教师:*****一.实验目的1.通过上机实验进一步熟悉并掌握汇编语言的指令系统和寻址方式;2.熟悉汇编语言程序上机的流程,以及与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)3.学习汇编程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法4.能够独自编写,调试,并成功运行一个完整的程序。

二.实验内容与步骤1.掌握汇编语言程序上机过程首先,新建文本文档后将扩展名改为.ASM,这是汇编语言源程序的文件格式,以记事本形式打开后在其中键入所编写的程序。

第一次题目是在屏幕上显示一串字符串,在老师的指导下,编写的程序如下:data segmentnote db 'hello','$'data endscode segmentmain proc farassume cs:code,ds:data,es:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov es,axmov ah,09hlea dx,noteint 21hmain endpcode endsend start之后,要进行编译和运行。

源程序经过翻译程序成为机器能够识别的目标程序,目标程序再经过连接程序连接后转换成在机器上可执行的程序。

基本流程图如下:在编译的过程中,程序查出的主要是语法上的错误,如果有错,则不能通过汇编,要纠错后重新汇编直到无错为止。

最后,生成的.EXE文件即为可执行文件,从磁盘调入内存运行,得到运行结果。

上述程序的运行结果为在屏幕上显示出“hello”。

2.编程完成任意两个两位数的加法运算编程任务的基本要求为:从键盘输入任意两个两位数相加,将结果显示在屏幕上。

刚开始拿到题目后,头脑里是比较混乱的。

经过与同学的探讨之后,我们大概确定出要完成整个功能,需经过以下过程:将输入的ASCII码与十进制数值进行转换,并保存在寄存器中;通过调用程序将两个数相加,并将结果保存;将结果显示在屏幕上。

北京工业大学微机原理实验报告2

北京工业大学微机原理实验报告2

北京工业大学微机原理实验报告2微机原理实验报告—实验二熟悉汇编程序建立及其调试方法姓名:学号:一、实验目的1、熟悉汇编语言源程序的框架结构,学会编制汇程序。

2、熟悉汇编语言上机操作的过程,学会汇编程序调试方法。

二、实验内容1、学习编写汇编语言源程序的方法,了解数据存放格式。

2、阅读给出的程序,找出程序中的错误。

3、通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和运行等全过程。

三、实验预习1、阅读实验指导第一章的内容,了解汇编语言程序建立、汇编、链接、调试的全过程。

2、下面的汇编语言源程序有错误的,试给程序加注释。

通过调试手段找出程序中的错误并修改之。

写出程序的功能,画出程序流程图。

(1)程序修改前:STACKSG:SEGMENT PARA STACK ‘STACK’ ;不能有冒号DB 256 DUP(?)STACKSG ENDSDATASG: SEGMENT PARA ‘DATA’;不能有冒号BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000COUNT EQU 20MAX DW ?DATASG ENDSCODESG: SEGMENT ;不能有冒号ASSUME SS:STACKSG , CS:CODESGASSUME DS:DATASGORG 100HBEGIN MOV DS, DATASG ;BEGIN: 应改为MOV AX , DATASG MOV DS, AX LEA SI ,BLOCKMOV CX, COUNTDEC CXMOV AX , [SI]CHKMAX ADD SI,2 ;应加冒号CHKMAX: CMP [SI] , AXJLE NEXTMOV AX , [SI]DEC CX ;删除NEXT: LOOP CHKMAXMOV MAX ,AXMOV AH, 4CHINT 21HCODESG ENDSEND BEGIN(2)程序修改后:STACKSG SEGMENT PARA STACK ‘STACK’DB 256 DUP(?)STACKSG ENDSDATASG SEGMENT PARA ‘DATA’BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000COUNT EQU 20MAX DW ?DATASG ENDSCODESG SEGMENTASSUME SS:STACKSG , CS:CODESGASSUME DS:DATASGORG 100HBEGIN MOV AX , DATASGMOV DS, AXLEA SI ,BLOCKMOV CX, COUNTDEC CXMOV AX , [SI]CHKMAX:ADD SI,2CMP [SI] , AXJLE NEXTMOV AX , [SI]NEXT: LOOP CHKMAXMOV MAX ,AXMOV AH, 4CHINT 21HCODESG ENDSEND BEGIN(3)程序注释:STACKSG SEGMENT PARA STACK 'STACK'DB 256 DUP(?)STACKSG ENDS ;定义堆栈段DATASG SEGMENT PARA 'DATA' ;数据段定义BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000 ;定义变量BLOCK包含20个字COUNT EQU 20 ;COUNT=20MAX DW ? ;定义字变量MAX并不赋值DATASG ENDSCODESG SEGMENT ;代码段定义ASSUME SS:STACKSG , CS:CODESG ;说明STACKSG是堆栈段ASSUME DS:DATASG ;CODESG是代码段,DATASG是数据段ORG 100HBEGIN: MOV AX, DATASGMOV DS, AX ;DS指向DATASGLEA SI ,BLOCK ;取BLOCK的有效地址给SIMOV CX, COUNT ;CX=20DEC CX ;CX=CX-1MOV AX , [SI] ;将DS:[SI]里的值送到AX CHKMAX : ADD SI, 2 ;SI=SI+2CMP [SI] , AX ;比较DS:[SI]与AX值的大小JLE NEXT ;如果DS:[SI]的值小于AX里的值,则跳转到NEXT MOV AX , [SI] ;将DS:[SI]的值送到AXNEXT: LOOP CHKMAX ;循环CHKMAXMOV MAX ,AX ;将AX的值送到变量MAXMOV AH, 4CH ;结束INT 21HCODESG ENDSEND BEGIN(4)程序的流程图:Y NNY(5)程序的功能:找出20个数中的最大值并保存。

微机原理(单片机汇编)实验报告

微机原理(单片机汇编)实验报告

软件实验报告软件实验一一、实验目的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个字节存储块各单元内数据对应相同。

大学微机课实验报告

大学微机课实验报告

实验名称:微机原理实验实验日期:2023年3月10日实验地点:计算机实验室实验人员:张三、李四一、实验目的1. 理解微机原理的基本概念和组成;2. 掌握微机系统的工作原理和指令系统;3. 熟悉汇编语言编程,提高程序设计能力;4. 通过实验,培养实际操作和问题解决能力。

二、实验内容1. 微机系统组成实验2. 指令系统实验3. 汇编语言编程实验三、实验步骤1. 微机系统组成实验(1)观察微机系统的硬件组成,包括CPU、内存、外设等;(2)了解各硬件模块的功能和相互关系;(3)通过实验,掌握微机系统的工作原理。

2. 指令系统实验(1)学习8086/8088指令系统的基本指令,如数据传送、算术运算、逻辑运算等;(2)通过实验,掌握指令的执行过程和指令的寻址方式;(3)分析指令的执行结果,验证指令的正确性。

3. 汇编语言编程实验(1)学习汇编语言的基本语法和编程规范;(2)编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;(3)调试程序,分析程序的执行过程,解决程序中的错误。

四、实验结果与分析1. 微机系统组成实验通过观察和实验,我们了解了微机系统的硬件组成,包括CPU、内存、外设等。

CPU是微机系统的核心,负责指令的执行和数据处理;内存用于存储程序和数据;外设包括键盘、显示器、打印机等,用于与用户进行交互。

2. 指令系统实验通过实验,我们掌握了8086/8088指令系统的基本指令,如数据传送指令MOV、算术运算指令ADD、逻辑运算指令AND等。

我们还了解了指令的执行过程和指令的寻址方式。

在实验过程中,我们通过分析指令的执行结果,验证了指令的正确性。

3. 汇编语言编程实验通过编写汇编语言程序,我们实现了数据传送、算术运算、逻辑运算等功能。

在调试程序的过程中,我们遇到了一些错误,如语法错误、逻辑错误等。

通过分析错误原因,我们成功解决了这些问题。

通过这个实验,我们提高了程序设计能力,培养了实际操作和问题解决能力。

微机原理综合实训报告

微机原理综合实训报告

通过本次微机原理综合实训,使学生掌握微型计算机的基本组成、工作原理以及常用接口技术,培养学生动手实践能力、分析问题和解决问题的能力。

具体目标如下:1. 熟悉微型计算机的硬件组成,了解各部件的功能和相互关系。

2. 掌握微机原理与接口技术的基本知识,如总线、中断、DMA等。

3. 学会使用常用接口芯片,如8255、8259、8253等。

4. 能够进行简单的微机原理设计与实现。

二、实训内容1. 微型计算机硬件组成实验(1)了解微型计算机的基本组成,包括中央处理器(CPU)、存储器、输入输出设备、总线等。

(2)学习CPU的内部结构,了解指令系统、寻址方式等。

(3)了解存储器的分类、容量、速度等参数,学习存储器扩展技术。

(4)学习输入输出设备的工作原理,掌握常用接口芯片的使用方法。

2. 微机原理与接口技术实验(1)学习总线、中断、DMA等基本概念,了解其工作原理。

(2)学习8255并行接口芯片的应用,实现LED显示、按键输入等功能。

(3)学习8259中断控制器芯片的应用,实现中断处理。

(4)学习8253定时/计数器芯片的应用,实现定时功能。

3. 系统设计与实现(1)根据实训要求,设计一个简单的微机系统。

(2)确定系统硬件组成,选择合适的接口芯片。

(3)编写系统软件,实现系统功能。

(4)进行系统调试,确保系统稳定运行。

1. 实验准备(1)了解实验目的、内容和方法。

(2)查阅相关资料,掌握实验所需知识和技能。

(3)准备实验仪器和设备,如示波器、逻辑分析仪等。

2. 实验操作(1)按照实验步骤进行操作,观察实验现象。

(2)记录实验数据,分析实验结果。

(3)针对实验过程中遇到的问题,查阅资料、请教老师,解决问题。

3. 系统设计与实现(1)根据实训要求,确定系统设计方案。

(2)进行硬件选型,设计电路图。

(3)编写系统软件,实现系统功能。

(4)进行系统调试,确保系统稳定运行。

四、实训成果1. 完成微型计算机硬件组成实验,掌握微型计算机的基本组成和工作原理。

汇编程序的建立、执行与调试

汇编程序的建立、执行与调试

微机原理与汇编语言实验报告姓名:学号:实验日期:一、实验名称汇编程序的建立、执行与调试二、实验目的1、掌握汇编语言程序建立的过程2、掌握调试工具DEBUG的使用方法三、实验设备微机,debug软件四、实验内容1、任务在DEBUG中,所有的数都是以十六进制方式显示,并且数后面没有H。

在DEBUG中标志位用以下符号来显示:标志位名称标志为1 标志为0O OV NVD DN UPI EI DIS NG PLZ ZR NZA AC NAP PE POC CY NCDEBUG的主要命令DEBUG EXAM1.EXE- (提示符)1. 汇编:A [地址]2. 反汇编:U [[地址][,地址]]-U ↙;从当前CS:IP开始的连续32个字节-U CS:IP ↙;从指定地址开始的连续32个字节-U CS:IP L5↙;从CS:IP开始的连续5个字节3.显示或修改寄存器的内容:R [寄存器]-R ↙;-R AX ↙;4.显示内存单元:D[[地址][,地址]]-D ↙;显示当前内存从DS:0开始的连续128个字节-D DS: 4 ↙;显示从指定地址开始的连续128个字节-D DS: 4 L5;↙显示从指定地址开始的连续5个字节5.修改内存单元:E [地址][数据]-E DS:0↙;显示内存0号单元,并等待修改;有下列5种情况之一可供选择:(1)输入16进制数(最多2位)按回车;输入数据代替原内容,E命令结束。

(2)输入16进制数(最多2位)按空格键显示下一单元内容,并等待修改;(3)直接按空格键显示下一单元内容,并等待修改;(4)直接按按两次回车键退出DEBUG状态。

(5)按“-”键,在下一行显示上一单元地址及内容,并等待。

6. 跟踪命令:T[=地址][,计数]7. 执行过程命令:P(追踪不进入子程序)8. 执行命令:G[=地址][,断点][,断点][,…]9. 退出命令:Q2、方案(1)思路1)汇编程序的建立a. 编辑在EDIT或记事本程序下编辑源程序,以.asm作扩展名保存文件。

北京化工大学 汇编语言程序设计实验报告

北京化工大学 汇编语言程序设计实验报告

习题1一.实验目的熟练掌握字符的输入二.实验原理DOS调用的1号功能三.实验内容code segmentassume cs:codestart:mov ah,1;输入并回显int 21hmov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论:用2号功能也可以得相同结果六.实验心得学会了字符的输入功能七.参考文献汇编课本八.技术支持韩阳老师~习题2一.实验目的熟练掌握字符的显示输出二.实验原理DOS调用的2号功能三.实验内容code segmentassume cs:codestart:mov dl,'T' ;调用2号功能输出字符mov ah,2int 21hmov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论:不用数据段直接输出即可六.实验心得学会了字符的输出功能七.参考文献汇编课本八.技术支持韩阳老师~习题3一.实验目的熟练掌握字符串的显示输出二.实验原理DOS调用的9号功能三.实验内容datas segmentstr db'how are you?$'datas endscodes segmentassume cs:codes ,ds:datasstart:mov ax,datas ;将数据地址送入ds mov ds,axlea dx,strmov ah,09 ;调用9号功能显示字符串int 21hmov ah,4chint 21hcodes endsend start四.结果与分析结果正确,符合题目要求五.问题讨论:用数据段直接输出即可六.实验心得学会了字符串的输出功能七.参考文献汇编课本八.技术支持韩阳老师~习题4一.实验目的熟练掌握大小写字母的转换和判断语句的调用二.实验原理用ASCII码值来判断大小写,用跳转语句来完成相应的操作三.实验内容datas segmentstr db'ERROR$' ;用来显示错误信息CRLF DB 0AH,0DH,"$" ;用来显示换行和回车datas endscode segmentassume cs:code,ds:datasstart:mov ah,01Hint 21Hpush ax ;保存输入的ax值mov ax,datasmov ds,axLEA DX,CRLFMOV AH,9INT 21Hpop ax ;取出输入的ax值比较cmp al,61H ;比最小的小写字母还小jl lop2cmp al,7aH ;比最大的小写字母还大jg lop2sub al,20H ;小写转大写mov dl,almov ah,2int 21hjmp exitlop2:lea dx,str ;不满足条件显示错误信息mov ah,09int 21hexit:mov ah,4chint 21hend start四.结果与分析结果正确,符合题目要求五.问题讨论:有ax先输入用栈保存的问题和最后大小写做完无条件跳转的问题六.实验心得判断语句的用法七.参考文献汇编课本八.技术支持韩阳老师~习题5一.实验目的熟练掌握循环语句的调用二.实验原理用cx中的值来确定循环的次数code segment assume cs:code start:mov cx,10 ;循环的次数 start_loop:mov dl,'F' ;显示输出 mov ah,2 int 21hmov ah,4ch int 21h code ends end start四.结果与分析结果正确,符合题目要求五.问题讨论 Cx 的用法 六.实验心得循环语句的用法 七.参考文献汇编课本 八.技术支持韩阳老师~ 习题6一.实验目的熟练掌握循环语句的调用和判断选择语句的调用用cx中的值来确定循环的次数和用cmp来确定后续操作三.实验内容code segmentassume cs:codestart:mov ah,01Hint 21Hcmp al,61H ;判断是否是“a”je lop1cmp al,62H ;判断是否是“b”je lop2mov ah,4chint 21hlop1:mov cx,10 ;打印10个“*” start_loop1:mov dl,'*'mov ah,2int 21hloop start_loop1mov ah,4chint 21hlop2:mov cx,10 ;打印10个“$” start_loop2:mov dl,'$'mov ah,2int 21h四.结果与分析结果正确,符合题目要求五.问题讨论判断选择语句的用法六.实验心得判断选择语句的用法七.参考文献汇编课本八.技术支持韩阳老师~习题7一.实验目的熟练掌握串中大小写的判断和转换二.实验原理用cmp进行大小写判断,再用加减做处理三.实验内容code segmentassume cs:codestart:mess1 db 'holle world' ;定义输入的串count equ $-mess1mov cx,countmov si,-1start_loop:inc sisub mess1[si],20H ;大小写转换mov dl,mess1[si]mov ah,02Hint 21Hloop start_loopmov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得串中各个字符的操作七.参考文献汇编课本八.技术支持韩阳老师~习题8一.实验目的综合运用字符串输出,判断,大小写转换等功能二.实验原理前几次要点的综合运用三.实验内容datas segment ;显示要输出的信息mess1 db 'Please input one character:$'mess2 db 'error!$'datas endscode segmentassume cs:code,ds:datasstart:mov cx,3mov ax,datasmov ds,axlea dx,mess1 ;显示输入提示mov ah,09Hint 21hmov ah,07Hint 21hcmp al,61H ;判断是否为小写字母jl lop2cmp al,7BHjge lop2dec almov dl,alstart_loop:mov ah,02H ;满足就显示3个字母int 21hinc dlloop start_loopjmp next ;程序运行完退出lop2:mov ax,datasmov ds,axlea dx,mess2 ;不满足显示错误信息mov ah,09Hint 21hmov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得对前面的各种操作掌握的更熟悉了七.参考文献汇编课本八.技术支持韩阳老师~习题9一.实验目的对数字的判断和处理二.实验原理用ASCII码来判断数字三.实验内容datas segmentmess1 db 100 dup(?) ;定义存储的区域datas endscode segmentassume cs:code,ds:datasstart:mov si,-1mov cx,100start_loop:mov ah,01Hint 21Hcmp al,0DH ;以换行和回车作为结束的标志je nextcmp al,0AHje nextcmp al,'0'je start_loop ;判断是否为数字cmp al,'1'je start_loopcmp al,'2'je start_loopcmp al,'3'je start_loopcmp al,'4'je start_loopcmp al,'5'je start_loopcmp al,'6'je start_loopcmp al,'7'je start_loopcmp al,'8'je start_loopcmp al,'9'je start_loopinc simov mess1[si],al ;只记录数字loop start_loopnext:mov dl,0AHmov ah,02Hint 21hinc simov cx,simov si,-1start_loop2:inc simov dl,mess1[si] ;显示输出没有数字的串mov ah,02Hint 21H四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得对前面的各种操作掌握的更熟悉了七.参考文献汇编课本八.技术支持韩阳老师~习题10一.实验目的熟练掌握字符串的匹配二.实验原理一个一个字符的比较三.实验内容datas segment ;显示提示信息mess1 db 'Please input the password:$'mess2 db 'Password error!$'mess3 db '0000000000000000000000'mess4 db '123456' ;这就是密码,不要告诉别人哦~ mess5 db 'Welcome to use!$'count db 3datas endscode segmentassume cs:code,ds:datasstart:mov si,-1mov cx,100mov ax,datasmov ds,axlea dx,mess1 ;显示提示信息mov ah,09Hint 21hmov dl,0AHmov ah,02Hint 21hjmp start_loop1 ;记录密码next1:dec countmov cx,100mov ax,datasmov ds,axlea dx,mess2mov ah,09Hint 21hcmp count,0je next2 ;三次不对则退出mov dl,0AHmov ah,02Hint 21hmov si,-1start_loop1: ;记录密码输出“*”mov ah,07Hint 21hcmp al,0DH ;如果是“换行”“回车”就结束je next0cmp al,0AHje next0inc simov mess3[si],almov dl,'*'mov ah,02Hint 21Hloop start_loop1next0:mov dl,0AHmov ah,02Hcmp si,5 ;只有输入字符是六个才比较jg next1cmp si,5jl next1int 21hmov cx,6mov si,-1mov al,0start_loop2: ;比较输入的字符和密码inc simov al,mess3[si]cmp al,mess4[si]jne next1loop start_loop2mov ax,datas ;比较成功就退出mov ds,axlea dx,mess5mov ah,09H Array int 21hmov ah,07Hint 21hnext2:mov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论对每次储存输入的缓冲区的清零六.实验心得数据要覆盖的彻底七.参考文献汇编课本八.技术支持韩阳老师~习题11一.实验目的熟练掌握字符串的输入,存储和输出二.实验原理开辟一个存储区,输入一个存一个三.实验内容datas segmentmess1 db 100 dup(?) ;用于存放数据datas endscode segmentassume cs:code,ds:datasstart:mov si,-1mov cx,100start_loop: ;输入要存入的数据mov ah,01Hint 21Hcmp al,0DH ;以回车作为结束信号je nextinc simov mess1[si],alloop start_loopnext:mov dl,0AHmov ah,02Hint 21hinc simov cx,simov si,-1start_loop2: ;显示输出inc simov dl,mess1[si]mov ah,02Hint 21Hloop start_loop2code endsend start四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得数据区要开辟的足够大七.参考文献汇编课本八.技术支持韩阳老师~习题12一.实验目的熟练掌握清屏操作二.实验原理调用BIOS的6号功能三.实验内容code segmentassume cs:codestart:mov al,0mov bh,10Hmov ch,0mov cl,0mov dh,24mov dl,79mov ah,6 ;相当于在整个窗口范围里开一个蓝色区域int 10Hmov ah,4chint 21Hend start四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得其实蓝屏很简单七.参考文献汇编课本八.技术支持韩阳老师~习题13一.实验目的熟练掌握BIOS调用,和字符串的显示二.实验原理调用BIOS的6号功能和13号功能三.实验内容data segmentmess1 db 'I LOVE YOU'count equ $-mess1n db 5m db 9data endscode segmentassume cs:code,ds:datastart:mov ds,axmov al,0mov bh,00Hmov ch,0mov cl,0mov dh,24mov dl,79mov ah,6 ;用黑色清屏int 10Hmov ah,07Hint 21Hstart_loop1: ;显示5个“I love you”mov ax,datamov ds,axmov bp,seg mess1mov es,bpmov bp,offset mess1mov cx,countinc mmov dh,mmov dl,33mov bl,8FHmov al,0mov ah,13Hint 10Hdec ncmp n,0 ;确定显示完jne start_loop1start_loop2:mov ah,0int 16Hcmp ah,01h ;判断是否为escjne start_loop2mov ah,4chcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论其中用到了光标的重置六.实验心得闪烁只有在xp的全屏模式下才能显示七.参考文献汇编课本八.技术支持韩阳老师~习题14一.实验目的熟练掌握BIOS调用,和字符的显示还有颜色的配色二.实验原理调用BIOS的9号功能三.实验内容codes segmentmain proc farassume cs:codesstart:mov bh,0mov cx,10 Array mov al,'Y'mov bl,14mov ah,9int 10hcall displaymov al,'A'mov bl,4mov ah,9int 10hcall displaymov al,'N'mov bl,2mov ah,9int 10hcall displaymov al,'G'mov bl,1mov ah,9int 10hmov ah,4chint 21hmain endpdisplay proc nearmov ah,2mov dl,0ahint 21hmov ah,2mov dl,0dhint 21hretdisplay endpcodes endsend start四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得用BIOS显示字符,重复的容易实现七.参考文献汇编课本八.技术支持韩阳老师~习题15一.实验目的熟练掌握数据的传送、转换和拼接二.实验原理一个一个的改变三.实验内容data segmentbuff db 0,1,2,3,4,5,6,7,8,9asc db 'ASC',10 dup(?)data endscodes segmentassume cs:codes,ds:datastart:mov ax,datamov ds,axmov cx,10mov si,-1mov di,2start_loop1:inc simov dl,buff[si]add dl,30H ;将数字转成对应ASCII码值inc dimov asc[di],dl ;将转好的值送入asc中loop start_loop1mov si,-1mov cx,13start_loop2:inc silea dx,ascmov dl,asc[si]mov ah,2int 21hloop start_loop2mov ah,4chint 21hcodes endsend start四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得比较简单基本上没有什么过的的分支七.参考文献汇编课本八.技术支持韩阳老师~习题16一.实验目的实现两个存储区的数据传送二.实验原理建立一个空的存储区,用来存放过度的数据三.实验内容datas segmentmess1 db 'abc',20 dup(?)mess2 db 'defg',20 dup(?)mess3 db 50 dup(?)datas endscodes segmentassume cs:codes,ds:datasstart:mov cx,30mov si,-1start_loop1:inc simov dl,mess1[si] ;将1的数据给3 mov mess3[si],dlloop start_loop1mov cx,30mov si,-1start_loop2:inc simov dl,mess2[si] ;将2的数据给1 mov mess1[si],dlloop start_loop2mov cx,30mov si,-1start_loop3:inc simov dl,mess3[si] ;将3的数据给2 mov mess2[si],dlmov ah,4chint 21hcodes endsend start四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得这是一个典型的用空数据区做桥梁交换的方法七.参考文献汇编课本八.技术支持韩阳老师~习题17一.实验目的多字符串的输出二.实验原理重复输出一个字符串三.实验内容datas segmentdata db 'HELLO$'datas endsassume cs:codes,ds:datasstart:mov ax,datasmov ds,axmov cx,4 ;先只显示4个start_loop:lea dx,datamov ah,9int 21hmov ah,2mov dl,0ahint 21hmov ah,2mov dl,0dhint 21hloop start_loop 2lea dx,data ;显示第5个,后面没有换行和回车mov ah,9int 21hmov ah,4chint 21hcodes endsend start四.结果与分析结果正确,符合题目要求五.问题讨论最后一个没有回车换行应单独输出六.实验心得多字符串重复输出七.参考文献汇编课本八.技术支持韩阳老师~习题18一.实验目的熟练的掌握对屏幕的操作二.实验原理用BIOS的清屏功能三.实验内容assume cs:code start:mov al,0mov bh,20h Array mov ch,0mov cl,0mov dh,12mov dl,39mov ah,6int 10hmov al,0mov bh,70hmov cl,39mov ch,0mov dh,12mov dl,79mov ah,6 int 10hmov al,0mov bh,70hmov cl,0mov ch,13mov dh,24mov dl,39mov ah,6int 10hmov al,0mov bh,20hmov cl,39mov ch,13mov dh,24mov dl,79mov ah,6int 10hmov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论要能准确的定位矩形的角六.实验心得矩形的清屏很容易控制七.参考文献汇编课本八.技术支持韩阳老师~习题19一.实验目的字符的匹配和分类统计二.实验原理利用ASCII码的特点逐渐缩小范围,最终统计出值三.实验内容pr macro dat1,dat2call enterlea dx,dat1mov ah,09hint 21hsub ax, axmov al, dat2call displayendmdata segment 用来存放输出的信息nn db 0ln db 0on db 0mess1 db 'ln:$'mess2 db 'nn:$'mess3 db 'on:$'data endsmain proc farcode segmentassume cs:code,ds:datastart:mov ax,0fff0h ;确定统计的范围mov es,axmov ax,datamov ds,axmov si,0000hmov cx,100lp1:mov dl,es:[si]jl othercmp dl,39Hjg lp2inc nn ;统计数字jmp lp4lp2:cmp dl,41Hjl othercmp dl,5AHjg lp3inc ln ;统计字母jmp lp4lp3:cmp dl,61Hjl othercmp dl,7AHjg otherinc lnjmp lp4other:inc onlp4:inc siloop lp1pr mess1,lnpr mess2,nnpr mess3,onmov ah,4chint 21hmain endpenter proc nearmov ah, 02mov dl, 0dhint 21hmov dl, 0ahint 21hretenter endpdisplay proc near ;将数字转换为对应的ASCII码值mov bl, 10div blpush axmov dl, alret四.结果与分析结果正确,符合题目要求五.问题讨论找到规律有耐心的逐步分析六.实验心得对分支条件掌握的更加熟练了七.参考文献汇编课本八.技术支持韩阳老师~习题20一.实验目的十六进制数变ASCII码二.实验原理遇到“A、B、C、D、E、F”时分类讨论三.实验内容data segmentmess db 2 dup(?)data endscode segmentassume cs:code,ds:datastart:mov cx,2mov si,-1lp:inc simov ah,01Hint 21Hmov mess[si],alloop lpcmp mess[si],'A' ;大于10的时候就特殊处理jge displaymov ah,2mov dl,0ahint 21hmov ah,2mov dl,0dhint 21hmov dl,30Hmov ah,02Hint 21hmov dl,mess[si]mov ah,02Hint 21h Array mov ah,4chint 21hdisplay:mov ah,2mov dl,0ahint 21hmov ah,2mov dl,0dhint 21hmov dl,31Hmov ah,02Hint 21hmov al,mess[si]sub al,11Hmov dl,almov ah,02Hint 21hmov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论无六.实验心得对数字转换更熟练了七.参考文献汇编课本八.技术支持韩阳老师~习题21一.实验目的完全熟练的掌握对图形和光标的操作二.实验原理BIOS功能调用三.实验内容proint macro dat1,dat2,dat3mov bh,dat1mov dh,dat2mov dl,dat3mov ah,2int 10hendmwindows macro opr1,opr2,opr3,opr4,opr5,opr6mov al,opr1mov ch,opr2 Array mov cl,opr3mov dh,opr4mov dl,opr5mov bh,opr6mov ah,6int 10hendmcode segmentassume cs:codestart:windows 0,0,0,24,79,70Hwindows 0,7,19,19,51,32Hwindows 0,8,20,18,50,70Hproint 0,18,20lp:mov cx,30lp0:mov ah,01hint 21hcmp al,1bHje exitloop lp0windows 1,8,20,18,50,70Hproint 0,18,20jmp lpexit:mov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论在输入回车时要进行特殊判断,防止其变到第一行六.实验心得对BIOS调用掌握的熟练了七.参考文献汇编课本八.技术支持韩阳老师~习题22一.实验目的对字符串的超级综合运用二.实验原理前面的各种原理三.实验内容datas segmentmess1 db 'Enter keyword:$'mess2 db 'Enert sentence:$'mess3 db 'Match at location:$'mess4 db 'No match!$'mess5 db 'H of the sentence$'self db 200,200 dup(?)key db 100,100 dup(?)count_start db 0;字符的位置CRLF DB 0AH,0DH,"$"datas endscode segmentassume cs:code,ds:datasstart:mov ax,datasmov ds,axlea dx,mess1mov ah,09Hint 21hMOV AH,0AHLEA DX,self ;先输入key INT 21HLEA DX,CRLFMOV AH,9INT 21Hsentence:lp:dec count_startcmp count_start,0jne lpmov ax,datasmov ds,axlea dx,mess2mov ah,09Hint 21hMOV AH,0AHLEA DX,key ;在输入self INT 21HLEA DX,CRLFMOV AH,9INT 21Hsub cx,cxMOV cl,key+1MOV DL,self+1LEA SI,key+2LEA DI,self+2NEXT: MOV AL,[SI]MOV BL,[DI]cmp al,0dHje exitCMP AL,BLJE MATCHinc siagain:LEA DI,self+2inc count_startLOOP NEXTjmp no_onematch:match1:inc siinc diMOV AL,[SI]MOV BL,[DI]cmp al,bljne againdec dlcmp dl,1jne match1;找到了;完全匹配成功mov ax,datasmov ds,axlea dx,mess3mov ah,09Hint 21hmov al,count_startcmp al,10jge change1add al,31Hmov dl,almov ah,02Hint 21Hjmp gochange1: ;位置的数字转ASCII码cmp al,15jg change2add al,36Hmov dl,almov ah,02Hint 21Hjmp gochange2:mov dl,'1'mov ah,02Hint 21Hsub al,16add al,31Hmov dl,almov ah,02Hint 21Hgo:mov ax,datasmov ds,axlea dx,mess5mov ah,09Hint 21hLEA DX,CRLFMOV AH,9INTjmp sentencemov ah,4chint 21hno_one: ;没有匹配的mov ax,datasmov ds,ax Array lea dx,mess4mov ah,09Hint 21hLEA DX,CRLFMOV AH,9INT 21Hjmp sentenceexit:mov ah,4chint 21hcode endsend start四.结果与分析结果正确,符合题目要求五.问题讨论我认为主要的问题是在重复输入查找和判断的时候要将原有的数据区中的数据清零,这样才不会受原来数据的影响六.实验心得要有耐心对每个bug一点点解决七.参考文献汇编课本八.技术支持韩阳老师~习题23一.实验目的掌握声程序二.实验原理三.实验内容datas segmentmus_freg dw 330,294,262,294,3 dup(330)dw 3 dup(294),330,392,392dw 330,294,262,294,4 dup(330)dw 294,294,330,294,262,-1mus_time dw 6 dup(25),50dw 2 dup(25,25,50)dw 12 dup(25),100datas endsstacks segmentstacks endscodes segmentassume cs:codes,ss:stacks,ds:datasmusic proc farmov ax,datasmov ds,axlea si,mus_freglea bp,ds:mus_timefreq:mov di,[si]cmp di,-1je end_mus ;整个音乐放完mov bx,ds:[bp]call soundfadd si,2add bp,2jmp freqend_mus:mov ax,4c00hint 21hmusic endpsoundf proc near ;发声的主程序push axpush bxpush cxpush dxpush dimov al,0b6hout 43h,almov dx,12hmov ax,348ch Array div diout 42H,almov al,ahout 42h,alin al,61hmov ah,alor al,3out 61h,alwait1:mov cx,4000call waitfdec bxjnz wait1mov al,ahout 61h,alpop dipop dxpop cxpop bxpop axretsoundf endpwaitf proc nearpush axwaitf1:in al,61hand al,10hje waitf1mov ah,alloop waitf1pop axretwaitf endpcodes endsend music四.结果与分析结果正确,符合题目要求五.问题讨论直接调用计算机硬件,延迟自己写,其余和书上一样六.实验心得学会了系统发声,基本上是书上的格式七.参考文献汇编课本,百度八.技术支持韩阳老师~习题25同21。

微机原理实验报告完整

微机原理实验报告完整

微机原理实验报告完整1. 引言微机原理是计算机科学与技术专业的一门基础课程,是理解计算机硬件原理和组成的重要环节。

本次实验旨在通过实践了解和掌握微处理器的运行原理和基本功能。

2. 实验目的- 掌握微机系统的基本组成和工作原理;- 熟悉微处理器的功能和操作;- 理解微机系统中各个组件的协同工作方式。

3. 实验设备和工具- 微机原理实验箱- PC机- 双层面板- 连接线- 电源线- 烙铁、电工胶布等工具4. 实验内容4.1 搭建实验环境在双层面板上搭建实验环境,包括连接微机组件和电源线,确保各个组件能正常接通电源。

4.2 编写汇编程序使用汇编语言编写一个简单的程序,使微处理器能够完成某项基本功能。

例如,计算两个数的和并将结果保存在内存中。

assembly; 汇编程序示例MOV AX, 5ADD AX, 3MOV [BX], AX4.3 加载和运行程序在操作系统中,使用汇编程序的编译器将上述汇编程序编译成机器码,并将其加载到内存中。

4.4 运行程序通过设置断点、单步执行等功能,运行编写的程序,并观察程序的运行情况。

同时,可以通过外部设备如数码管、LED灯等显示程序结果。

5. 实验结果与分析在实验过程中,我们成功搭建了微机实验环境,并编写了一段简单的汇编程序。

通过在操作系统中加载和运行程序,我们能够看到程序正常运行并达到预期效果。

通过断点、单步执行等功能,我们可以深入了解程序的执行过程,并进行调试和分析。

6. 实验总结通过本次实验,我们深入了解了微机系统的基本组成和工作原理,熟悉了微处理器的功能和操作。

同时,我们也学会了如何编写、加载和运行汇编程序,并通过调试和分析来理解程序的执行过程。

这些都对我们进一步理解计算机硬件原理和组成有很大的帮助。

然而,本次实验只是初步接触微机系统,在实践中还有很多细节和实际问题需要解决。

因此,我们需要进一步学习和实践,不断提升自己的能力和技术水平。

7. 改进方向虽然本次实验取得了一定的成果,但仍有一些改进的空间。

微机原理软件实验报告

微机原理软件实验报告

实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。

2. 掌握汇编语言程序设计的基本方法。

3. 通过实验,加深对微机原理的理解。

二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。

2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。

四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。

微机原理综合实验报告

微机原理综合实验报告

微机原理综合实验报告随着计算机技术的不断发展,微机已经成为了我们日常工作和生活中不可或缺的一部分。

为了更好地了解微机的工作原理和实践应用,我们进行了微机原理的综合实验,本文将对此次实验进行详细的讲解和总结。

一、实验目的本次实验的主要目的是通过搭建计算机系统的全部硬件及连接,熟悉和掌握微机的工作原理和实际应用,实践操作模拟简单的计算机应用程序等。

二、实验步骤1.准备工作:搭建计算机实验系统所需的硬件和软件,包括主板、处理器、硬盘、内存、显示器等,同时,将各部件连接起来。

2.开机自检:按下计算机开机键后进行自检,检查各部件是否正常工作。

3.进入BIOS:进入BIOS设置,为系统配置提供支持。

4.安装操作系统:安装Windows操作系统5.应用程序:安装并应用简单的计算机应用程序,如表格制作、文档编辑等。

三、实验结果分析通过本次实验,我们深入了解了微机的硬件构成和软件运行原理,加深了对微机工作原理的认识。

在实践操作中,我们对计算机系统在实际应用中的硬件和软件环境有了深刻的认识和了解。

四、实验中遇到的问题及解决方法在实验中,我们遇到了一些问题,如计算机开机时无法启动、操作系统无法正常安装、硬件连接不正确等。

这些问题的出现主要是由于我们操作时没有细心和认真,没有按照实验指导书的步骤操作。

针对这些问题,我们仔细检查操作过程中的每一个步骤,重新进行操作,直至问题得到解决。

五、结论通过本次实验,我们深刻了解了微机的硬件构成和软件运行原理,了解了微机在实际应用中的硬件和软件环境。

同时,我们还掌握了微机应用的基本技能,如软件安装、简单文件的制作和编辑等。

通过实验的过程,我们深入体验了计算机系统的基本构成及实践应用,并发现并解决了其中存在的问题和疑问,从而加深了对计算机系统的理解和认识,为今后我们的进一步学习和实践打下了坚实的基础。

《微机原理与汇编语言程序设计》课程设计报告-年月日星期,当前时间显示

《微机原理与汇编语言程序设计》课程设计报告-年月日星期,当前时间显示

关键词
汇编
调用
子程序 二进制
中断
循环
延迟
第1章 绪论
1.1 引言
1. 选题的背景
日常生活中我会遇到许多时间和日期,时间和日期对我们的生活是 十分重要的。平时只是知道看时间,而不知道那时钟的原理。通过这次 的课程设计让我知道了其中的奥妙。 对汇编中的一些语言认识更加一层。 特别是中断指令,循环程序、延迟等了解深了一点。 2.设计思路和预期目标
目录
第1章 绪论 1.1 引言 ……………………………………… .6 1. 选题的背景 ……………………………… .6 2.设计思路和预期目标 ……………………… .6 1.2 课程设计目的与意义 ……………………… ...6 1.3 课程设计内容与要求 ……………………… ...6 1.4 课程设计地点及设计环境 …………………… .6
第2章 系统设计 2.1 系统框架设计 ……………………………… 7 2.1.1 主程序流程图 ………………………… ...7 2.2 系统模块功能说明 ………………………… ..7 2.2.1 主程序说明 …………………………… ...7 2.2.2 子程序及宏指令说明 …………………… ..8
第 3 章 源程序代码设计 …………………… ...8
课设的目标就是要帮助读者提高程序设计的能力, 较深入地掌握汇编语言程序设计的思想与
方法。学习汇编语言时,有些同学已经学习过例如
C 语言等高级语言,将为我们理解程序
设计的思想打下良好基础; 但也可能从未学习过其他语言, 虽然框框较少, 但建立计算机语
言与程序设计的概念将是一大难题。 汇编语言是多类知识交叉的学科, 一部分知识往往还连
2.2.2 子程序及宏指令说明

大学微机原理实验报告(3篇)

大学微机原理实验报告(3篇)

第1篇实验名称:微机原理实验实验日期:2023年10月25日实验地点:计算机实验室实验教师:[教师姓名]实验学生:[学生姓名]班级:[班级名称]一、实验目的1. 理解微机原理的基本概念和组成结构。

2. 掌握微机硬件的基本操作和调试方法。

3. 熟悉汇编语言编程和程序调试技巧。

4. 通过实验加深对微机原理课程的理解,提高动手能力。

二、实验内容本次实验主要分为以下几个部分:1. 微机硬件系统结构认识:了解微机硬件系统的组成,包括CPU、内存、I/O接口等,熟悉各部件的功能和相互关系。

2. 汇编语言编程:学习汇编语言的基本语法和指令系统,编写简单的汇编程序,实现特定功能。

3. 程序调试:使用调试工具(如DEBUG)对汇编程序进行调试,查找并修正错误。

4. 微机原理实验:完成以下实验任务:1. 编写程序实现两个多位十进制数的相加。

2. 编写程序实现字符串比较功能。

3. 编写程序实现乘除法运算。

三、实验步骤1. 微机硬件系统结构认识:- 观察实验室中的微机硬件系统,了解各部件的连接方式和功能。

- 使用示波器检测实验装置的信号是否正常。

2. 汇编语言编程:- 学习汇编语言的基本语法和指令系统。

- 编写程序实现两个多位十进制数的相加,程序如下:```;加数DATA1 DB 3,4,5,6,7;被加数DATA2 DB 2,3,4,5,6;结果SUM DB 5 DUP(0);程序开始MOV CX, 5 ;循环次数MOV AL, 0 ;结果初始化为0MOV SI, OFFSET DATA1 ;加数地址MOV DI, OFFSET DATA2 ;被加数地址ADD_LOOP:ADD AL, [SI] ;加数加到AL寄存器ADC AL, [DI] ;进位加到AL寄存器MOV [DI], AL ;结果存回DI寄存器ADD SI, 1 ;加数地址加1ADD DI, 1 ;被加数地址加1LOOP ADD_LOOP ;循环;程序结束```- 编写程序实现字符串比较功能,程序如下:```;字符串1STRING1 DB 'Hello';字符串2STRING2 DB 'World';比较结果RESULT DB 0;程序开始MOV SI, OFFSET STRING1 ;字符串1地址MOV DI, OFFSET STRING2 ;字符串2地址CMP_LOOP:MOV AL, [SI] ;读取字符串1的当前字符CMP AL, [DI] ;与字符串2的当前字符比较 JNE NOT_EQUAL ;不相等则跳转到NOT_EQUAL INC SI ;字符串1地址加1INC DI ;字符串2地址加1LOOP CMP_LOOP ;循环MOV RESULT, 1 ;相等则将结果设置为1JMP END ;跳转到ENDNOT_EQUAL:MOV RESULT, 0 ;不相等则将结果设置为0END:;程序结束```- 编写程序实现乘除法运算,程序如下:```;被乘数DATA1 DB 10;乘数DATA2 DB 5;结果PRODUCT DB 0;程序开始MOV AL, [DATA1] ;被乘数加载到AL寄存器MUL [DATA2] ;乘数乘到AL寄存器MOV [PRODUCT], AL ;结果存回PRODUCT;程序结束```3. 程序调试:- 使用DEBUG工具对汇编程序进行调试,查找并修正错误。

北京化工大学微机原理硬件实验报告

北京化工大学微机原理硬件实验报告

实验三:可编程并行接口8255code segmentassume cs:codestart:mov dx,28bhmov ax,8bhout dx,axinout:mov dx,28ahin ax,dxmov dx,288hout dx,axmov dl,0ffhmov ah,06hint 21hjz inoutmov ah,4chint 21hcode endsend start实验八:可编程定时器/计数器(8254 4 )code segmentassume cs:codestart:mov al,3ehmov dx,283hout dx,almov ax,0mov dx,280hout dx,almov al,ahout dx,almov al,0behmov dx,283hout dx,almov ax,10mov dx,282hout dx,almov al,ahout dx,alint 21hmov ax,4chcode endsend start实验十三:中断data segmentmess db 'TPCA interrupt!',0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart:mov ax,csmov ds,axmov dx,offset int3mov ax,250bhint 21hcliin al,21hand al,0f7hout 21h,almov cx,10still:jmp llint3:mov ax,datamov ds,axmov dx,offset messmov ah,09int 21hmov al,20hout 20h,alloop nextin al,21hor al,0Bhout 21h,alstimov ah,4chint 21hnext:iretcode endsend start实验十六:串行通讯8251data segmentio8253a equ 280hio8253b equ 283hio8251a equ 2b8hio8251b equ 2b9hmes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置计数器工作方式mov al,16hout dx,almov dx,io8253amov al,52 ;给计数器送初值out dx,almov dx,io8251b ;初始化xor al,almov cx,03 ;向控制端口送个delay: call out1loop delaymov al,40h ;向控制端口送H,使其复位call out1mov al,4eh ;设置为个停止位,8个数据位,波特率因子为 call out1mov al,27h ;向送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz waitimov ah,01 ;是,从键盘上读一字符int 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251ainc alout dx,al ;发送mov cx,40hs51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz next ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上 int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,alpush cxmov cx,40hgg: loop gg ;延时pop cxretout1 endpcode endsend start。

微机原理实习报告(带完全汇编源码)

微机原理实习报告(带完全汇编源码)

目录一.实习目的 .................................................. 错误!未定义书签。

二、实习内容及要求...................................... 错误!未定义书签。

三、方案和工作原理说明.............................. 错误!未定义书签。

四、程序流程图 .............................................. 错误!未定义书签。

五、程序源代码及注释.................................. 错误!未定义书签。

六、电路的连接 .............................................. 错误!未定义书签。

七、调试中出现的问题、原因及排除方法.. 错误!未定义书签。

一.实习目的本课程的课程设计是自动化专业学生学习完《微机原理及应用》课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。

本课程设计的目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法。

二.实习内容及要求1.实习内容简易电子琴原理:(1) 蜂鸣器输入不同频率的方波,会发出不同的声音;(2) 通过按键,由单片机控制产生不同频率的方波,从而发出不同的声音。

(3) 通过8255的PA口,使G6区的1~7号键由低到高发出1-7的音阶。

2.设计要求从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:1)掌握汇编语言程序设计的基本方法。

2)进一步理解各种接口电路的应用。

例如8255并行接口。

3)掌握利用PC机扬声器发出不同频率声音的方法。

4)理解12864模块的应用。

(此为创新添加部分)三、方案和工作原理说明1.方案基于PC计算机的时钟晶振为1.MHz,利用电脑里面的蜂鸣器发出声音。

汇编语言程序设计实验报告(韩阳)

汇编语言程序设计实验报告(韩阳)

汇编语言程序设计实验报告ASSEMBLY LANGUAGE PROGRAMMING班级:计科1103班学号:2011014257姓名:朱楠北京化工大学信息科学与技术学院二〇一三年六月实验一汇编语言源程序的建立、汇编、连接和运行一、实验目的:1.学习汇编语言源程序的编辑、汇编、连接、运行全过程。

2.了解汇编程序、连接程序、DOS系统装入和返回功能。

掌握MASM、LINK的应用。

3.掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言程序的开发过程。

4.掌握DOS系统功能调用的基本方法。

二、实验原理:调用DOS系统功能21h的简单输入输出功能。

三、实验内容:1.从键盘输入一个字符并回显到显示器上。

源程序: code segmentassume cs:codestart:mov ah,1int 21hmov ah,4chint 21hcode endsend start2.显示输出一个字符Q源程序:code segmentassume cs:codestart:mov ah,2mov dl,'Q'int 21hmov ah,4chint 21hcode endsend start3.在屏幕上显示输出“I love DOTA”源程序:data segmentznzn1 db'I LOVE DOTA$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov ah,9hint 21hmov ah,4chint 21hcode endsend start4.编写一个程序,要求从键盘输入一个小写字母,以其大写字母形式显示,否则显示ERROR源程序data segmentstring db 'error!$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov ah,7int 21hcmp al,'a'jnl next1jmp next2next1:cmp al,'z'jg next2mov ah,2sub al,20hmov dl,alint 21hmov ah,4chint 21hnext2:mov ah,9lea dx,stringint 21hmov ah,4chint 21hcode endsend start5.在屏幕上输出10个“T”源程序:code segmentassume cs:codestart:mov cx,10again:mov ah,2mov dl,'t'loop againmov ah,4chint 21hcode endsend start四、结果与分析:按要求输入输出,完成实验要求。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验目的,通过本次实验,掌握微机原理的基本知识,了解微机系统的组成和工作原理,掌握微机系统的组装和调试方法。

实验一,微机系统组成及工作原理。

1.1 微机系统的组成。

微机系统由中央处理器(CPU)、内存、输入设备、输出设备和外部设备等组成。

其中,CPU是微机系统的核心部件,负责控制整个系统的运行。

1.2 微机系统的工作原理。

微机系统的工作原理是通过CPU对内存中的指令进行解释和执行,从而实现各种功能。

CPU通过总线与内存、输入输出设备进行数据传输和控制信号的交换,实现对整个系统的控制和管理。

实验二,微机系统的组装和调试。

2.1 微机系统的组装。

在组装微机系统时,首先要选择合适的主板、CPU、内存、硬盘等配件,然后按照正确的安装顺序和方法进行组装。

组装完成后,还需连接电源、显示器、键盘、鼠标等外部设备。

2.2 微机系统的调试。

组装完成后,需要对微机系统进行调试,检查各个部件是否连接正确,是否能够正常工作。

通过BIOS设置和操作系统的安装,完成对微机系统的调试和配置。

实验三,微机系统的应用。

3.1 微机系统的应用领域。

微机系统广泛应用于各个领域,如办公、教育、科研、娱乐等。

在办公领域,微机系统可以用于文字处理、表格制作、图像处理等;在教育领域,微机系统可以用于多媒体教学、网络教学等。

3.2 微机系统的发展趋势。

随着科技的不断发展,微机系统也在不断更新换代,性能不断提升,体积不断缩小,功耗不断降低。

未来,微机系统将更加智能化、便携化,成为人们生活、工作不可或缺的一部分。

结论,通过本次实验,我对微机原理有了更深入的了解,掌握了微机系统的组成和工作原理,了解了微机系统的组装和调试方法,对微机系统的应用和发展趋势也有了一定的认识。

这对我今后的学习和工作将有很大的帮助。

《微机原理实验报告》word版

《微机原理实验报告》word版

班级自动化学号姓名实验一系统认识实验一实验目的掌握教学系统的基本操作二实验设备PC机一台masm软件三实验内容及步骤(1)输入程序并检查无误,经汇编连接后装入系统(2)输入E3500后回车,在3500-3510单元中分别送入00~09十个数据(3)按“T“键运行以上程序直至程序运行完(4)输入D3600后回车,查看3600单元后面的数据四程序及其显示的结果(1)程序(2)显示的结果实验三运算类编程实验一实验目的(1)掌握使用运算类指令编程及调试方法(2)掌握运算类指令对各状态标志位的影响及其测试方法二实验设备PC一台masm软件三实验内容及步骤(1)二进制双精度加法运算(2)输入程序并检查无误,经汇编连接后装入系统(3)用U0000:2000查看MOV AX,DA TA的语句,即得到数据段段位置CS:1412用E命令E1412:0000回车,给XL,YL,YH赋值存入二进制数A0,65,15,00和9E,B7,21,00(4)用G=0000:2000,运行以上程序(5)输入D1412:0008,检验显示的结果是否为:3E,1D,17,00四实验程序五程序显示的结果实验四分支程序设计实验一实验目的:(1)掌握分支程序的结构(2)掌握分支程序的设计,调试方法二实验设备:PC机一台masm软件三实验内容设计一数据块间的搬移程序。

设计思想:程序要求把内存中一数据区传送到另一存储区。

源数据块和目的数据块在存储中可能有三种情况,对于两个分离的情况,数据的传送从数据块的首位置开始,或者从数据块的末位置开始。

但对于有部分重叠的情况,则要加以分析,否则重叠部分会因搬移而遭到破坏,可以得到以下结论:(1)当源数据块首址大于目的块首址时,从数据块首址开始传送数据。

(2)当源数据块首址小于目的块首址时,从数据块末址开始传送数据。

四实验步骤(1)按实验流程图设计编写实验程序(2)输入程序并检查无误后,经汇编,连接后装入系统(3)用E命令在以SI为起址的单元中填入十六个数(4)用G=0000:2000运行实验程序(5)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同五实验程序及结果显示(1)实验程序(1)实验结果显示实验五循环程序设计一实验目的(1)加深对循环结构的理解(2)掌握循环结构程序设计的方法(3)熟练掌握调试循环程序的方法二实验设备:PC机一台masm软件三实验内容求数据区内负数的个数:设数据区的第一单元存放区内单元数据的个数,从第二单元开始开始存放数据,在区内最后一个单元存放结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一汇编语言源程序的建立、汇编、连接和运行1.编写程序,从键盘输入一个字符并回显到视频显示器上。

2.编写程序调用BIOS功能,在屏幕上显示5个“Beijing University of Chemical Technology”。

流程图:代码:1.DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV AH,1INT21HMOV AH,4CHINT21HMOV AH,4CHINT21HCODES ENDSEND START2.DATAS SEGMENT;此处输入数据段代码STRING DB'Beijing University of Chemical Technology' DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV DX,SEG STRINGMOV DS,DXLEA DX,STRINGMOV AH,09INT21HMOV AH,4CHINT21HCODES ENDSEND START实验二课后习题2-22,2-23一、实验内容内存与字符串。

二、实验习题课后习题2-22,2-23三、实验报告要求1.画出程序流程框图。

2.源程序清单(要求在重要语句后加注释)。

2-22:两个字符串的长度均为100,首地址分别为STRING1和STRING2,比较两个字符串是否完全相同,如果相同,将BL寄存器置为00H;如果不完全相同,将BL寄存器置为FFH,并将第一个字符串中的第一个不相同字符的地址放在SI寄存器。

流程图:代码:DATA SEGMENTSTRING1DB'ABCDEFJHIJ'STRING2DB'ABFMEWATER'DATA ENDS CODE SEGMENTASSUME DS:DATA,CS:CODE START:MOV AX,DATAMOV DS,AXLEA SI,STRING1LEA DI,STRING2MOV CX,10CLDREPE CMPSBJCXZ ALLMATCHDEC SIDEC DIJMP DONEALLMATCH:MOV BX,00HDONE:MOV BX,0FFHOUT:MOV AH,4CHINT21HCODE ENDSEND START2-23:一个数据块的首地址为DATA,结束符为‘$’,编写程序段统计数据块中分别等于正值、负值和零的数据个数,分别存入PLUS、MINUS和ZERO单元。

流程图:代码:ASSUME CS:CODE,DS:DATA DATA SEGMENTBUF DB-3,-2,-1,0,1,2,3N DW$-BUF;统计数据个数PLUS DB0MINUS DB0ZERO DB0DATA ENDSCODE SEGMENTSTART:MOV AX,DATA;装载MOV DS,AXMOV CX,NLEA BX,BUFL:CMP BYTE PTR[BX],0;有符号比较跳转JG BIGJE EINC MINUSJMP ENDJUDGE:INC ZEROJMP ENDJUDGBIG:INC PLUSENDJUDG:INC BX;移动指针LOOP LMOV AX,4C00H;返回INT21HCODE ENDSEND START实验三字符串搜索一、实验内容字符串的查找和匹配。

二、实验习题查找匹配字符串SEARCH。

程序接收用户键入的一个关键字以及一个句子。

如果句子中不包含关键字则显示‘No match!’;如果句子中包含关键字则显示‘Match’且把该字在句子中的位置用十六进制数显示出来。

三、实验报告要求1.画出程序流程框图。

2.源程序清单(要求在重要语句后加注释)。

流程图:要求程序的执行过程如下:Enter keyword:loveEnter Sentence:I love ChinaMatch at location:11H of the sentence.Enter Sentence:English is difficultNo match.源代码:DATAREA SEGMENTSTRING1DB"Enter keyword:$"STRING2DB"Enter sentence:$"STRING3DB"Match at location:$"STRING4DB"No match!",13,10,"$"STRING5DB"11H of the sentence.$" keyword DB50D,?,51D DUP(?)sentence DB50D,?,51D DUP(?)DATAREA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATAREA,ES:DATAREA START:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAREAMOV DS,AXMOV ES,AXLEA DX,STRING1MOV AH,09HINT21HLEA DX,keywordMOV AH,0AHINT21HMOV AH,02HMOV DL,0AHINT21HLEA DX,STRING2MOV AH,09HINT21HLEA DX,sentenceMOV AH,0AHINT21HMOV AH,02HINT21HLEA SI,keyword+2;关键词LEA DI,sentence+2MOV AX,0MOV AL,[sentence+1];句子字符个数MOV AH,[keyword+1];关键词字符个数CMP AL,AHJL NOSUB AL,AHMOV AH,0MOV CX,AXINC CXCOMPARE:PUSH CXMOV CX,3;建议采用mov ax,字符个数,使字符的个数不固定CLDREPZ CMPSBJZ MATCHMOV AX,3;建议采用mov ax,字符个数SUB AX,CXSUB SI,AX;关键词回到词首MOV AX,2;建议采用mov ax,字符个数-1SUB AX,CXSUB DI,AXPOP CXLOOP COMPARENO:LEA DX,STRING4MOV AH,09HINT21HJMP EXITMATCH:POP CXMOV BX,DILEA DX,STRING3MOV AH,09HINT21HSUB BX,OFFSET sentence+2SUB BX,2;首地址所在字符串中的地址CALL CHANGELEA DX,STRING5INT21HEXIT:RETMAIN ENDPCHANGE PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV CH,4MOV CL,4ROTATE:ROL BX,CLMOV AL,BLAND AL,0FHADD AL,30HCMP AL,3AHJL PRINTITADD AL,7HPRINTIT:MOV DL,ALMOV AH,2INT21HDEC CHJNZ ROTATEPOP DXPOP CXPOP BXPOP AXRETCHANGE ENDPCODE ENDSEND START实验四DOS和BIOS调用方法一、实验内容BIOS调用方法,INT10H视频显示功能。

二、实验习题1.编写程序,从键盘输入一个字符串保存在内存一缓冲区中,然后将该字符串在屏幕上显示。

2.编写一个汇编语言程序,要求从键盘输入一个小写字母,以其大写字母形式显示,否则显示ERROR。

三、实验报告要求1.画出程序流程框图。

2.源程序清单(要求在重要语句后加注释)1:STACK SEGMENTSTT DB100DUP(?)STACK ENDSDATA SEGMENTBUFF DB100DB?DB100DUP(?)CRLF DB0AH,0DH,'$';0AH,0DH在ASCII中是回车换行DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AH,10MOV DX,OFFSET BUFFINT21HMOV BL,BUFF+1;将输入的字符串的个数赋值给BLLEA SI,BUFF+2;取BUFF+2的偏移地址给SIMOV BYTE PTR[SI+BX+1],'$';SI是存放输入的字符串的位置,那么加上BX就跳过了字符串,在后面的一个单元赋值一个$.MOV AH,9MOV DX,OFFSET CRLF;加了2句,为了输出回车换行INT21HMOV DX,OFFSET BUFF+2;输出字符串,遇到$结束INT21HEXIT:MOV AX,4C00HINT21HCODE ENDSEND START2:流程图:代码:DATAS SEGMENT;此处输入数据段代码STRING DB'ERROR$'DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV AH,08INT21HCMP AL,61HJL ERRORCMP AL,7AHJG ERRORSUB AL,20HMOV DL,ALMOV AH,2INT21HMOV AH,4CHINT21HERROR:MOV DX,SEG STRINGMOV DS,DXLEA DX,STRINGMOV AH,09INT21HCODES ENDSEND START。

相关文档
最新文档