微机原理实验一
微机原理实验1
实验一两个多位十进制数相减实验一. 实验要求将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序存放在以DA TAI和DATA2为首的5个内存单元中(低位在前),结果送回DATAI处。
二、实验目的1.学习数据传送和算术运算指令的用法。
2.熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
DA TA SEGMENTDA TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)DA TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)MES1 DB '-','$'MES2 DB '=','$'DA TA ENDSSTACK SEGMENT ;堆栈段STA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DA TA1MOV BX,05CALL DISPL ;显示被减数MOV AH,09HLEA DX,MES1INT 21HMOV SI,OFFSET DATA2MOV BX,05 ;显示减数CALL DISPLMOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DA TA1MOV DI,OFFSET DATA2CALL SUBA ;减法运算MOV SI,OFFSET DATA1MOV BX,05 ;显示结果CALL DISPLMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HINT 21HMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子功能DSI: MOV AH,02MOV DL,[SI+BX-1] ;显示字符串中一字符INT 21HDEC BX ;修改偏移量JNZ DSIRETDISPL ENDPSUBA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05SU1: SUB BYTE PTR[SI+BX-1],30HSUB BYTE PTR[DI+BX-1],30HDEC BX ;将ASCII 码表示的数字串JNZ SU1 ;转化为十六进制的数字串MOV SI,DXMOV DI,BPMOV CX,05 ;包括进位,共5位CLC ;清进单位SU2: MOV AL,[SI]MOV BL,[DI]SBB AL,BL ;带进位相减AAS ;非组合BCD码的减法调整MOV [SI],AL ;结果送被减数区INC SIINC DI ;指向下一位LOOP SU2 ;循环MOV SI,DXMOV DI,BPMOV BX,05SU3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BX ;十六进制的数字串转化ASCII码表示的数字串JNZ SU3RETSUBA ENDPCODE ENDSEND START实验二两个数相乘的实验一.实验要求实现十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,算式结果在屏幕上显示出来。
微机原理及应用实验(题目)
微机原理及应用实验实验一开发环境的使用一、实验目的掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部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码之间的转换。
微机原理实验一
实验1 汇编语言环境熟悉班级B12512 学号20124051222姓名刘忠信实验目的:1. 掌握DEBUG常用命令。
2. 了解程序运行的过程。
3. 熟悉8086内部寄存器和内存单元的状况。
4. 掌握MASM、LINK、DEBUG等工具的使用。
实验设备:硬件:PC机软件:DOS操作系统、编辑软件、MASM 5.0实验内容及要求:DEBUG是用于调试汇编语言程序的一个工具软件,可用于建立汇编语言源程序,并能对汇编用语言源程序进行汇编;还可用于程序的控制执行,跟踪程序的运行,了解程序中每条指令的执行结果以及每条指令执行完毕后各个寄存器的内容,以便检查和修改可执行程序;也可用于对接口操作和对磁盘进行读写操作等。
(1)启动和退出DEBUG程序启动:若DEBUG安装在C盘的跟目录下,进入DOS命令状态后,直接启动DEBUG的方法是:C:\DEBUG_这时屏幕上出现DEBUG的命令提示符“_”,等待键入DEBUG命令。
退出:在DEBUG的命令提示符“_”下键入Q命令,即可结束DEBUG的运行,返回DOS 操作系统。
(2)常用DEBUG程序DEBUG命令是在命令提示符“_”下由键盘键入的。
每条命令以单个字母的命令符开头,后跟命令的操作参数,各操作参数之间用空格或逗号隔开,操作参数与命令之间用空格隔开。
1.显示存储单元命令D格式:DD <地址> 按指定地址范围显示D <地址范围> 按指定首地址显示2.跟踪命令T格式:T [=<地址>][<条数>] 多条指令跟踪3连续执行命令G格式:GG= <地址> 按指定地址范围显示D =<地址>,<断点> 按指定首地址显示,到断点自动停止并显示当前所有寄存器,状态标志位的内容和下一条要执行的指令。
4.反汇编命令U格式:U <地址> 按指定地址开始反汇编U <地址范围> 按指定存储单元开始反汇编5显示内存命令R格式:R 显示CPU内所有寄存器内容R <寄存器名> 显示和修改某个寄存器内容6.修改内存单元命令E格式:E <地址><单元内容> 逐个单元修改存储单元内容E <地址><单元内容表> 用指定内容替代原内容实验总结:掌握DEBUG命令的使用以及熟悉8086内部寄存器和内存单元的情况,了解程序运行的过程。
微机原理综合实验报告
滨江学院微机原理综合实验实验报告学生姓名学号专业信息工程班级2016级二O一八年十二月三十日微机原理综合实验实验一利用DEBUG调试程序调试程序段1、实验目的1)熟悉DEBUG有关命令的使用方法。
2)利用DEBUG掌握有关指令的功能。
3)利用DEBUG运行简单的程序段。
2、实验内容1)进入和退出DEBUG程序。
2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。
对于U命令、N命令、W命令等,也应试一下。
3)利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
3、实验准备1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。
2)作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。
3)阅读将AX左移9位的程序段。
4、实验步骤1)在DOS提示符下,进入DEBUG程序。
2)在DOS目录下启动DEBUG。
3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。
5、实验报告要求1)如何启动和退出DEBUG程序。
2)整理每个DEBUG命令使用的方法,实际示例及执行结果。
3)启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?实验结果:实验二分支程序实验1、实验目的1)掌握分支程序的设计方法。
2)掌握利用DEBUG修改参数、检查结果的方法。
3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。
2、实验内容1)编写一个程序,显示AL寄存器中的两位十六进制数2)编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
3、实验准备1)编写实验内容要求的两个程序。
2)写出调试以上程序,即修改程序参数,检查结果的操作方法。
3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。
微机原理及实验指导
实验一、I/O程序设计一.实验内容:I/O程序设计(一)实验内容:1.编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。
2.从键盘输入两个1位十进制数,计算二者之和,并将结果显示在屏幕上。
3.编程由键盘输入任意一位数,将该数以二进制数形式显示在屏幕上,例:5=00000101B (二)实验步骤: 1. 画出实验流程图。
2. 运行Tddebug软件,选择Edit菜单编写实验程序 3. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
4. 使用Rmrun菜单中的Run运行程序,观察运行结果。
5. 使用Rmrun菜单中的Debug调试程序。
单步执行指令,观察各寄存器及数据区的内容。
6. 更改数据区中的数据,考察程序的正确性。
二.分析设计思想。
设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为ASCII码送屏幕显示。
其中0H~9H之间的数加30H,即可得0H~9H的ASCII码,而AH~FH的ASCII码,则需再加7H,参见表5-1。
参考程序流程如图2-1所示。
示例程序参见参考程序清单。
三.程序清单及流程DATA SEGMENTMES DB 'Show a as hex:',0AH,0DH,'$'SD DB 'a'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES ;显示提示信息MOV AH,09H INT 21HMOV SI,OFFSET SD 4MOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START四.实验结果。
微机原理实验
微机原理实验报告来源:卢爱軍GD的日志实验1基本操作实验一、实验目的(1)掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2)掌握使用运算指令类编程及调试方法。
(3)掌握运算类指令对各状态标志位的影响及其测试方法。
(4)学习使用软件监视变量的方法。
二、实验设备PC机一台,TD- PITC实验装置一套三、实验内容及步骤通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容3.1 实验内容一——BCD码转换为二进制实验内容将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。
实验步骤:1)运行Wmd86软件,进入Wmd86集成开发环境。
2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里我们选择汇编语言。
3)语言选择后,点击新建来新建一个文档。
默认文件名为Wmd861.4)编写实验程序。
并保存,此时系统会提示输入新的文件名,输完后点击保存。
实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV SI 3500HMOV DI 3510HA1:MOVE AL,[SI]ADD AL,ALMOV BL,ALADD AL,ALADD AL,ALADD AL,BLINC SIADD AL,[SI]MOV [DI],ALINC SIINC DILOOP A1A2:JMP A2CODE ENDSEND START5)点击编译文件,若程序无误,再点击进行连接。
微机原理实验一
微机原理实验一
实验目的:
通过本实验,学生将掌握微机原理的基本知识,了解微机的组成结构和工作原理,掌握微机的基本操作方法。
实验内容:
1. 掌握微机的基本组成结构。
2. 了解微机的工作原理。
3. 学习微机的基本操作方法。
实验仪器和设备:
1. 微机主机。
2. 显示器。
3. 键盘。
4. 鼠标。
实验步骤:
1. 打开微机主机电源,启动计算机。
2. 通过鼠标和键盘操作,进入操作系统界面。
3. 了解微机的基本组成结构和工作原理。
4. 学习并掌握微机的基本操作方法。
实验注意事项:
1. 在操作微机时,要注意避免静电干扰,避免损坏微机设备。
2. 操作过程中要注意操作方法,避免误操作导致系统崩溃。
3. 学习微机原理时,要认真听讲,理解每个步骤的操作原理。
4. 实验结束后,要及时关闭微机电源,做好设备的保养工作。
实验总结:
通过本次实验,我对微机的基本组成结构和工作原理有了更深入的了解,掌握了微机的基本操作方法。
这对我今后的学习和工作都有很大的帮助。
同时,我也意识到了学习微机原理的重要性,希望在今后的学习中能够更加努力,不断提高自己的专业技能。
结语:
微机原理实验一是我们学习过程中的重要一环,通过实际操作,我们更深入地了解了微机的组成结构和工作原理,也掌握了微机的基本操作方法。
希望大家能够认真对待实验,加强对微机原理的学习,为以后的学习和工作打下坚实的基础。
西安交大微机原理第一次实验报告(共10页)
微机(wēi jī)原理第一次实验报告一.实验(shíyàn)目的(1) 学习8086/8088指令系统中一些基本(jīběn)指令的用法和程序设计的基本方法。
(2) 熟悉PC机上建立、汇编、连接(liánjiē)、调试和运行8086、8088汇编语言程序的全过程。
(3) 学习提示信息的显示及键盘输入字符的方法。
(4) 掌握分支程序的设计方法。
二.实验内容(1) 设a,b,c,d四个数分别以单字节压缩BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d)并将结果放在Y1单元中,将结果在屏幕上显示出来。
在debug中不断改变a,b,c,d内容并查看结果。
1. a=09, b=06, c=04, d=072. a=38, b=41, c=29, d=343. a=70, b=23, c=42, d=414. a=63, b=73, c=62, d=50(2) 在提示信息下,从键盘输入原码表示的二位十六进制有符号数,当此数大于0时,屏幕上显示此数为正数;当此数小于0时,屏幕上显示此数为负数;当此数为0时,屏幕上显示此数为零。
三.实验调试过程3.1 题目一调试过程C:\<DEBUG ONE.EXE-U 反汇编-R 查看(chákàn)寄存器变量值观察(guānchá)到0005时已完成(wán chéng)数据初始化,利用(lìyòng)g 5追踪到此处利用-d0指令查看内存单元,在偏移地址为0,1,2,3的地方有9,6,4,7,正是我们在代码中赋的初值。
-g d,观察(guānchá)到此时AL已赋值a=15H-g 16,计算(jì suàn)出a+b的值并赋给AL,值为0b,正确(zhèngquè)-g 19,DAA调整后AL变为11,计算(jì suàn)正确-g 1b,cl=04H成功赋值给AL,正确-g 1f,计算出(a+b)-(c+d)结果为04H,正确题目(tímù)二程序调试过程-U0, 反汇编-g 5,程序执行到此处时,完成(wán chéng)DS寄存器赋值DS=0B5EH-g a,程序执行到此处时,完成(wán chéng)SS寄存器赋值SS=0B69H-g 24,程序执行到此处,实现提示信息输出(shūchū)INPUT DATA:,手动输入C9-U-g 2f,程序执行到此处,成功(chénggōng)跳转,显示信息“THIS DATA IS –“四.程序(chéngxù)及框图4.1 题目(tímù)一程序DSEG SEGMENT ;定义数据段NUM DB 13H,27H,11H,12H ;定义(dìngyì)a,b,c,dY1 DB ?DSEG ENDS ;数据段定义结束SSEG SEGMENT PARA STACK ;定义堆栈段DB 20 DUP(?)SSEG ENDS ;堆栈段定义结束CSEG SEGMENT ;定义代码段ASSUME CS:CSEG,DS:DSEG,SS:SSEG ;各段定义(dìngyì) START: MOV AX,DSEGMOV DS,AX ;数据段段(duàn duàn)地址送DSMOV AX,SSEGMOV SS,AX ; 堆栈段段(duàn duàn)地址送SSMOV AL,[NUM]ADD AL,[NUM+1] ;计算(jì suàn)a+bDAA ;压缩BCD码加法调整DAAMOV CL,AL ; 保存a+bMOV AL,[NUM+2]ADD AL,[NUM+3] ;计算c+dDAA ;压缩BCD码加法调整DAASUB CL,AL ;计算(a+b)-(c-d)MOV AL,CLDAS ;DAS调整MOV [NUM+4],AL ;保存结果AND AL,0F0H ;取AL中高四位MOV CL,4SHR AL,CL ;BCD码高位移至低位ADD AL,30H ;AL加30H得ASCII码MOV DL,ALMOV AH,02HINT 21H ;显示DLMOV AL,[NUM+4] ; 恢复ALAND AL,0FH ;取AL低四位ADD AL,30H ;AL加30H得ASCII码MOV DL,ALMOV AH,02HINT 21H ;显示DLMOV AX,4C00HINT 21H ;返回DOSCSEG ENDSEND START ;程序结束4.2 题目二程序CRLF MACRO ;宏定义MOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21H ;显示换行ENDM ;宏结束DATA SEGMENT ;定义数据段MESS1 DB 'INPUT DATA:',0DH,0AH,'$'MESS2 DB 'THIS DATA IS+',0DDH,0AH,'$'MESS3 DB 'THIS DATA IS-',0DH,0AH,'$'MESS4 DB 'THIS DATA IS ZERO',0DH,0AH,'$'DATABUF DB 3 ;定义(dìngyì)最大可输入字符长度 ACTLEN DB ? ;实际(shíjì)输入字符长度STRING DB 3 DUP(?) ;输入(shūrù)字符缓冲区DATA ENDS ;数据(shùjù)段结束SSEG SEGMENT PARA STACK 'STACK' ;定义堆栈段 DB 50 DUP(0)SSEG ENDS ;堆栈段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE,SS:SSEG,DS:DATA ;各段定位START: MOV AX,DATAMOV DS,AX ;DS段寄存器赋值MOV AX,SSEGMOV SS,AX ;SS段寄存器赋值MOV DX,OFFSET MESS1MOV AH,09HINT 21H ;显示提示信息MOV AH,0AHMOV DX,OFFSET DATABUFINT 21H ;接收键入的字符串CRLF ;回车换行MOV AL,STRING ;接收字符高位CMP AL,38H ;比较高位和38H的大小JGE FUSHU ; 若高位>=38H?,跳至FUSHU处执行 CMP AL,30H ;比较高位和30H的大小JE ZERO ;若高位=30H?,跳至ZERO处执行ZHENGSHU: MOV DX,OFFSET MESS2 ;显示输出为正数 MOV AH,09HINT 21HJMP OVERFUSHU: MOV DX,OFFSET MESS3 ;显示输出为负数MOV AH,09HINT 21HJMP OVERZERO: MOV AL,[STRING+1] ;显示输出为0CMP AL,30HJNE ZHENGSHUMOV DX,OFFSET MESS4MOV AH,09HINT 21HJMP OVEROVER: HLTCODE ENDS ;代码段结束(jiéshù)END START ;程序(chéngxù)结束五.实验(shíyàn)结果5.1 题目(tímù)一实验结果1. a=09, b=06, c=04, d=07时,计算结果为042. a=38, b=41, c=29, d=34时,计算结果为163. a=70, b=23, c=42, d=41时,计算结果为104. a=63, b=73, c=62, d=50时,计算结果为245.2 题目二实验结果键盘输入c9,输出“THIS DATA IS-“键盘输入17,输出“THIS DATA IS +”键盘输入00,输出”THIS DATA IS ZERO’六.必要的分析6.1 题目一分析1. 压缩BCD码需要用到压缩BCD码的调整指令2. 程序末尾显示要利用DOS功能调用3.显示单个字符,要先将其转化为ASCII 码,再利用DOS功能调用的02H功能。
微机原理实验报告1
微机原理实验报告班级:电气93姓名:党尧学号:09041059实验一:顺序程序的设计一、实验目的:1.学习8086/8088指令系统中一些基本指令的用法和程序设计的基本方法。
2.熟悉在PC机上建立、汇编、链接、调试和运行8086、8088汇编语言程序的全过程。
二、实验内容:设a、b、c、d四个数分别以胆子解压缩BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d)并将结果放在Y1单元,将结果在屏幕上显示出来。
在DEBUG中,不断改变a,b,c,d内容并查看结果。
1.a=09,b=06,c=04,d=072.a=38,b=41,c=29,d=343.a=70,b=23,c=42,d=414.a=63,b=73,c=62,d=50三、程序框架:DESG SEGMENT :定义数据段NUM DB 13H,27H,11H,12H :定义a,b,c,dY1 DB ?DSEG ENDS :数据段定义结束SSEG SEGMENT PARA STACK :定义堆栈段DB 20 DUP(?)SSEG ENDS :堆栈段定义结束CSEG SEGMENT :定义代码段ASSUME CS:CSEG,DS:DSEG,SS:SSEG :各段定义START: MOV AX,DSEGMOV DS,AX :数据段段地址送DSMOV AX,SSEGMOV SS,AX :堆栈段段地址送SSMOV AX,4C00HINT 21HCSEG ENDSEND START四、程序内容:DSEG SEGMENTNUM DB 13H,27H,11H,12HY1 DB ?DSEG ENDSSSEG SEGMENT PARA STACKDB 20 DUP(?)SSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART: MOV AX,DSEGMOV DS,AXMOV AX,SSEGMOV SS,AXMOV AL,NUM :数据a送ALADD AL,NUM+1 :将a+b存储到ALDAA :压缩BCD码加法调整MOV CL,AL :保存AL内容MOV AL,NUM+2 :数据c送ALADD AL,NUM+3 :将c+d存储到ALDAA :压缩BCD码加法调整SUB CL,AL :将(a+b)-(c+d)存储到CLMOV AL,CL :CL送ALDAS :压缩BCD码减法调整MOV Y1,AL :送出结果显示压缩BCD码:MOV BL,AL :保存AL中的内容AND AL,0F0H :取AL中高四位MOV CL,4SHR AL,CL :BCD码高位移到低位ADD AL,30H :(AL)加30H得ASCII码MOV DL,ALMOV AH,02HINT 21H :显示(DL)MOV AL,BL :恢复(AL)AND AL,0FH :取(AL)低四位ADD AL,30H :(AL)30H得ASCII码MOV DL,ALMOV AH,02HINT 21H :显示(DL)返回DOS:MOV AX,4C00HINT 21HCSEG ENDSEND START五、实验分析:运用debug程序的-u命令可见程序反汇编内容:之后用–g 及–r 命令可观察每一步程序进行后AL中存储内容的变化:0BD9:0000 B8D60B MOV AX,0BD60BD9:0003 8ED8 MOV DS,AX0BD9:0005 B8D70B MOV AX,0BD70BD9:0008 8ED0 MOV SS,AX0BD9:000A A00000 MOV AL,[0000] :AL=130BD9:000D 02060100 ADD AL,[0001] :AL=3A0BD9:0011 27 DAA :AL=400BD9:0012 8AC8 MOV CL,AL0BD9:0014 A00200 MOV AL,[0002] :AL=110BD9:0017 02060300 ADD AL,[0003] :AL=230BD9:001B 27 DAA :AL=2308D9:001C 2AC8 SUB CL,AL0BD9:001E 8AC1 MOV AL,CL :AL=1D0BD9:0020 2F DAS :AL=1708D9:0021 A20400 MOV [0004],AL-g 24后-r命令可见:AX=0B17 BX=0000 CX=0012 DX=0000 SP=0014 BP=0000SI=0000 DS=0BD6 SS=0BD7 CS=0BD9 IP=0024可知此时程序已将(a+b)-(c+d)结果17存入到AL中。
微机原理实验一
实验一汇编语言程序设计上机实验的基本过程——PB14000521 王艳红〇、实验目的和要求:1.熟悉汇编语言程序设计上机实验的计算机软硬件平台。
2.熟悉汇编语言程序设计上机实验的过程。
3.熟练掌握汇编语言源程序的编辑及对其汇编、连接、运行的过程。
4.熟练掌握使用DEBUG调试和运行程序的方法(“工欲善其事,必先利其器!“)。
一、实验内容和过程注:由于实验内容有两个题目,为了写实验报告时思路的连贯性,对于实验内容和过程两个题目分开写。
1.0 实验内容原题1.请先充分分析和理解课件的源程序,然后输入、编辑该程序,并完成对其汇编、连接、运行等操作过程。
再用调试程序debug来查看、记录(建议使用表格形式)和分析CS、IP、DS、ES、SS、SP以及AX、DX等程序中所使用到的和自己感兴趣的寄存器(例如标志寄存器),在该程序执行前、执行过程、执行结束(出现有“Program terminatednormally”提示信息)返回DOS等各个步骤的状态值,亲历查验程序运行的各个环节的状态(包括查看数据段、堆栈段的存储内容),全面分析和充分理解汇编语言源程序的组成,以及DOS系统平台调用执行程序的过程(包括返回DOS状态的操作原理)。
1.1 程序的算法思想a.例题中程序的主要功能是在DOS界面输出字符串“This is a sample program.”,并自动换行。
b.程序中定义了三个段DATA、STACK和CODE。
DATA中以DA1为偏移地址的名定义了一个字符串“This is a sample program.”和三个字符,其中0DH是CR(即回车)的ASCII码,0AH是LF(即换行)的ASCII码,$是后续显示字符串功能的结束字符串标志。
STACK中定义了一个栈,这个栈内定义了100个字节的空间,但是没有放入具体内容。
CODE中定义了一个MAIN过程,MAIN过程中的FAR说明了是段间调用,ASSUME指明了段寄存器与段基址的对应关系。
微机原理实验
试验一存储器读写实验一、存储器读写实验目的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、掌握直流电机的驱动原理。
微机原理实验
微机原理实验第二部分实验内容《微机原理与应用》包括6个实验,其中前3个是软件编程,在PC机上完成,后3个是硬件实验,在TDN-MD实验箱上完成。
实验一顺序程序设计与调试一、实验目的1.熟悉汇编语言上机过程和上机步骤。
2.掌握汇编语言程序书写格式。
3.掌握顺序程序的设计与调试方法。
4.掌握汇编语言程序运行结果的观察方法。
二、实验设备PC机一台(安装汇编软件)。
三、实验内容分析并对比以下各程序段运行的结果。
1.两种加法指令比较(1) STCMOV AL,50HMOV BL,60HADD AL,BL(2)STCMOV AL,50HMOV BL,60HADC AL,BL2.两种加1指令比较(1) MOV AL,0FFHINC AL(2) MOV AL,0FFHADD AL,13.两种乘法指令比较(1) MOV AL,0FFH MOV BL,0FFH MUL BL(2) MOV AL,0FFH MOV BL,0FFH IMUL BL4.逻辑指令比较(1) MOV AL,55H AND AL,0FH (2) MOV AL,55H OR AL,0FH (3) MOV AL,55H XOR AL,0FH (4) MOV AL,55H TEST AL,0FH 5.移位指令比较(1) MOV AL,55H SHL AL,1(2) MOV AL,55H SHR AL, 1 (3) MOV AL,55H SAR AL, 1(4) STCMOV AL,55H ROL AL, 1 (5) STCMOV AL,55H ROR AL, 1 (6) STCMOV AL,55HRCL AL, 1(7) STCMOV AL,55HRCR AL, 1四、选作题在数据段中定义变量X、Y、Z、RESULT,计算X+Y-Z,结果存入数据段中的单元中。
其中X、Y、Z均为32位带符号数。
五、实验要求1.按汇编语言格式书写程序,在debug下进行调试、记录每组指令的运行情况,并进行分析与对比。
微机原理实验
实验一调试程序DEBUG的使用方法一、实验目的通过对DEBUG调试程序的使用,熟悉用DEBUG调试汇编语言程序的方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,为后续程序编制和调试打下基础。
二、实验原理调试程序DEBUG 的特点:在受控环境中测试程序;装入,显示或修改任何文件;执行DOS程序;完成磁盘实际读/写操作;建立或汇编汇编语言程序。
DEBUG的命令格式:DEBUG [drive:][path][filename.exe][param...]其中:drive: 是DEBUG将要调试的文件所在的磁盘驱动器。
path: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。
filename.exe 是DEBUG将要调试的文件名。
param 是将被调试的程序(或文件)的命令行参数。
例如:调试放在c 盘asm文件夹下的汇编程序t1.exe。
c:> debug c:\asm\t1.exe ↙(↙回车符)当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。
DEBUG使用单字符命令:R命令:查看、改变CPU寄存器的内容D命令:查看内存中的内容E命令:改写内存中的内容U命令:将内存中的机器指令翻译成汇编指令(反汇编)T命令:执行一条机器指令A命令:以汇编指令的格式在内存中写入一条机器指令Q命令:退出DEBUG 状态三、实验内容1、参考教材,熟悉DEBUG的使用方法,运行各种命令,观察运行后的况。
2、用DEBUG调试程序调试汇编语言例子te1.exe程序(程序见后面)。
1)用U命令对te1.exe文件进行反汇编,比较源程序te1.asm和反汇编后的指令代码。
2)用R命令查看各寄存器的初试状态。
3)用T命令单步跟踪te1.exe的执行过程,写出每一步执行后,相关寄存器中的内容。
四、实验步骤1、按实验内容用全屏幕编辑程序EDIT编写源程序te1.asm2、运用汇编源程序,产生目标文件.OBJ3、连接目标文件,产生可执行文件.EXE4、用DEBUG运行可执行文件。
微机原理实验报告
微机原理实验报告班级:自动化72组员梁慕佳 07054031张乐 07054033张林鹏 07054034实验一:8255 并行接口实验1 实验目的1. 学习并掌握8255 的工作方式及其应用;2. 掌握8255 典型应用电路的接法。
2 实验设备PC机一台,TD-PITE 实验装置一套。
3 实验内容1. 基本输入输出实验。
编写程序,使8255 的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2. 流水灯显示实验。
编写程序,使8255 的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
4 实验原理并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图2-6-1 所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-6-2所示。
图2-6-1 8255内部结构及外部引脚图图2-6-2 8255控制字格式5 实验步骤1. 基本输入输出实验本实验使8255 端口A工作在方式0 并作为输入口,端口B工作在方式0 并作为输出口。
用一组开关信号接入端口A,端口B 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。
具体实验步骤如下述:(1)实验接线图如图2-6-3所示,按图连接实验线路图;(2)编写实验程序,经编译、连接无误后装入系统;(3)运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。
微机原理实验
实验一、DEBUG 调试软件的使用一、实验目的1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2.了解数据在存储器中的存取方法以及堆栈中数据的压入与弹出。
3.掌握各种寻址方式以及简单指令的执行过程。
4.掌握变量和标号的处理,数值的默认进位制。
二、实验内容1.设堆栈指针SP=2000H,AX=3000H,BX=5000H;利用堆栈实现将AX,BX的内容交换。
用DEBUG 进行汇编和调试。
1.1 DEBUG的主要命令DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
一.进入DEBUG状态二.DEBUG的命令1.汇编命令A该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
注意:汇编程序默认的数据是十进制,而DEBUG默认的数据是16进制,即DEBUG中没有二进制、八进制及十进制,只有16进制。
汇编命令格式为:-A? [段地址]:[偏移地址] 说明:[ ]表示可选项,若未指定地址,则默认地址为CS:0100H。
例:用汇编语言编写一个简单的加法程序。
输入的汇编指令有语法错误的,将提示“error”,再重新输入正确指令即可。
若程序输入完毕,发现某条指令输入错误,比如第三条语句输入有误,就从该指令的偏移地址开始汇编(即-A 106)。
如果新输入的指令所占用的内存空间跟旧指令一样,修改完回车退出汇编即可;如果新输入的指令所占用的内存空间比旧指令少,可在多余的内存空间输入“NOP(空操作,占一字节)”指令;如果新输入的指令所占用的内存空间比旧指令多,就必须将后面的所有指令重新输入。
思考:汇编程序时,偏移地址为何不是连续的,它是如何变化的?(参考第6小点)2.命名命令N读(L)/写(W)程序前,必须先命名,即该命令结合读(L)/写(W)命令使用。
(参阅4、5)例:-N EX1;给程序文件命名为EX1。
3.检查和修改寄存器命令R4.写盘命令WW命令没有任何参数时,与命令N配合使用进行写操作,使用W命令前在BX:CX中应写入文件的字节数。
微机原理实验 原理
微机原理实验原理
实验1:微机原理实验的实验目的
实验2:微机原理实验的仪器和材料
实验3:微机原理实验的实验步骤
实验4:微机原理实验的实验结果与分析
实验5:微机原理实验的实验结论
实验1:实验目的
本实验旨在通过使用微机原理实验仪器和材料,了解微机原理的基本原理和工作方式。
实验2:仪器和材料
本实验所需的仪器和材料包括微机原理实验仪器、计算机、电源线、串口通信线、示波器等。
实验3:实验步骤
1. 将微机原理实验仪器与计算机连接,确保连接稳定。
2. 打开电源线,将微机原理实验仪器通电。
3. 配置串口通信线,确保仪器与计算机之间的串口通信正常。
4. 在计算机上开启相关的软件程序,进行实验参数的设置与调整。
5. 根据实验要求,进行数据采集、数据处理以及实验结果的观察与记录。
6. 分析实验结果,根据实验目的得出相应的结论。
实验4:实验结果与分析
根据实验数据的采集和处理,我们得到了实验结果。
经过对实
验结果的分析和比较,可以得出以下结论:
- 实验结果符合预期,验证了微机原理的基本原理和工作方式。
- 实验过程中出现了一些异常情况,为了更好地理解这些异常
状况,需要进一步分析和研究。
实验5:实验结论
通过本次微机原理实验,我们深入了解了微机原理的基本原理和工作方式。
我们可以得出以下结论:
- 微机原理是计算机科学中的基础课程,对于理解和掌握计算
机系统的工作原理至关重要。
- 通过实验,我们可以进一步深入理解微机原理,为今后的学
习和科研工作奠定基础。
微机原理实验
实验一:两个多位十进制数相加
本程序将两个多位十进制数相加, 其中加数与被加 数均以ASCII码形式存放在以DATA1和DATA2为首的5 个内存单元中(低位在前), 相加结果被送回DATA1 处。
程序中先要把加数与被加数由十进制ASCII码转化 为十六进制的数字串, 然后将它们进行带进位相加并 作AAA调整,最后将结果保存。 程序流程图见下页:
实验二:排序
本程序将数据区中的10个数由小到大排序,而且 排序后的数, 仍存放在该区域中。 程序采用冒泡法,设置了内、外两层循环, 其中 在第 i 次外循环中通过(10 - i)次内循环找出剩下 数中的最小数, 然后与当前数进行交换,从而完成 排序。 程序流程图见下页。
实验三
一、实验目的
RAM 实验
微机原理课程实验
实验一:两个多位十进制数相加 实验二:排序 实验三 RAM 实验
《微机原理》是一门对实际动手能力要求比较高 的学科。由于《微机原理》课程的实验种类繁多,但 课时有限,我们选择了比较具有代表性的几个实验。 该课程在硬件方面着重讨论了8086的体系结构、接口 技术 及其应用等。而这些硬件方面的内容如果能够结 合实际动手进行实验,将获得较佳的学习效果。
1、熟悉6116静态RAM的使用方法,掌握PC机外存扩充的手段。 2、了解PC机62芯总线信号的定义,领会总线及总线标准的意 义。 3、通过对硬件电路的分析,了解总线的工作时序。
二、实验内容 对指定地址的RAM进行数据读/写
1、将硬件电路连接好,如左图所示。 2、编制程序,将A--Z26个字符序列寸入A0000~A07FF单元, 再从中读出并显示在屏幕上。 3、使用DEBUG的F命令,填充6116RAM的A000:0000~07FF单元 全'A'字符,再填充A000:0800~0FFF单元全为'B'字符
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验一
一、试验目的:熟练掌握8086的指令系统,初步掌握用汇编语言设计、编写、调试和运行程序的方法。
为微机原理的后续课打下坚实的基础。
二、实验要求
学习与实验有关的系统软件,如编辑程序、汇编程序、连接程序和调试程序等,在调试过程中,掌握debug程序常用的操作命令。
(1)编写传送字符串的程序,把数据段BUFFER1为首地址的5个字节的数据传送到以BUFFER2为首地址的缓冲区中(注意传送方向)。
用EDLIN编辑软件编写如下代码,文件的扩展名为*.ASM.
DATA SEGMENT
BUFFER1 DB 35H,78H,0A5H,33h,22h
BUFFER2 DB 5(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,BUFFER1+4
LEA DI,BUFFER2+4
MOV CX,5
STD
REP MOVSB
MOV AH,4CH
INT 21H
CODE ENDS
END START
用宏汇编命令汇编源程序*.ASM, 例:MASM * .ASM (产生机器码文件和列表文件.OBJ和*.LST)
用连接程序产生可执行文件例:LINK 文件名.OBJ(产生可执行文件文件名.EXE)用调试软件DEBUG调试程序:
1.DEBUG程序的调用
在DOS提示符下键入:C>DEBUG [D:][PA TH][文件名.EXE](显示“—”)
2.显示内存单元内容的命令D,格式为:—D[地址]或—D[范围]
3.修改单元内容
—E地址
例如:
—E 100:
18E4:0100 89..78 把100单元的内容89改为78
4.显示寄存器和标志寄存器的内容
—R
显示状态寄存器的内容OV DN EI NG ZR AC PE CY
NV UP DI PL NZ NA PO NC —R寄存器名例:-—R AX 就显示AX的内容
5.跟踪命令T
6.g [地址] 全速运行到地址处。
例:g 0027 运行到地址0027处
7.g 全速运行到程序结束
8.反汇编U 反汇编32个字节
9.退出命令Q
(2)编写把数据段中的两个字数据相加,和送sum单元的程序。
要求:1.单步运行,观察各寄存器的变化和sum单元的结果。
2.修改程序把运算的结果送显示器显示。
(3)编写将两个二进制数转换为二进制的ASCII码的程序(参考P97的程序段,并注意主
程序和子程序之间的参数传递)。
两数相加并显示参考程序清单:
DATA SEGMENT
A1 DW 1111H,2222H
A2 DW 3333H,4444H
A3 DW 3 DUP(0)
A4 DB 8 DUP(0)
DB '$'
DATA ENDS
stak segment stack
db 100 dup(?)
stak ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ss:stak
START: MOV AX,DATA
MOV DS,AX
MOV CL,2
CLC
MOV SI,OFFSET A1
MOV DI,OFFSET A2
MOV BX,OFFSET A3
AS: MOV AX,[SI]
ADC AX,[DI]
MOV [BX],AX
INC SI
INC SI
INC DI
INC DI
INC BX
INC BX
DEC CL
JNZ AS
LEA DI,A3+3
LEA SI,A4
MOV CX,4
AS1: MOV AL,[DI]
MOV BL,AL
AND AL,0F0H
PUSH CX
MOV CL,4
SHR AL,CL
POP CX
ADD AL,30H
MOV [SI],AL
MOV AL,BL
AND AL,0FH
ADD AL,30H
MOV [SI+1],AL
DEC DI
INC SI
INC SI
DEC CX
JNZ AS1
MOV DX,OFFSET A4
MOV AH,9
INT 21H
mov ah,4ch
int 21h
EDE: NOP
CODE ENDS
END START
把二进制数转换成转换成二进制对应的ASCII码
data segment
bin1 db 35h
bin2 dw 0ab48h
ascbuf db 20h dup(?)
data ends
stack1 segment para stack
dw 20h dup(?)
stack1 ends
code1 segment
assume cs:code1,ds:data,ss:stack1
start: mov ax,data
mov ds,ax
mov dx,0
mov dh,bin1
lea di,ascbuf
mov ax,8
push di
call binasc
pop di
mov dx,bin2
add di,19h
mov ax,10h
call binasc
mov ah,4ch
int 21h binasc proc
mov cx,ax
lop: rol dx,1
mov al,dl
and al,1
add al,30h
mov [di],al
inc di
loop lop
ret
binasc endp
code1 ends
end start。