西安交大微机原理实验报告1
- 格式:docx
- 大小:86.78 KB
- 文档页数:8
西安交通大学微型计算机接口技术实验报告班级:物联网姓名:学号:实验一基本I/O扩展实验一、实验目的1、了解 TTL 芯片扩展简单 I/O 口的方法,掌握数据输入输出程序编制的方法;2、对利用单片机进行 I/O 操作有一个初步体会。
二、实验内容74LS244 是一种三态输出的8 总线缓冲驱动器,无锁存功能,当G 为低电平时,Ai 信号传送到Yi,当为高电平时,Yi 处于禁止高阻状态。
74LS273 是一种8D 触发器,当CLR 为高电平且CLK 端电平正跳变时,D0——D7 端数据被锁存到8D 触发器中。
实验原理图:三、实验说明利用74LS244 作为输入口,读取开关状态,并将此状态通过74LS273 再驱动发光二极管显示出来,连续运行程序,发光二极管显示开关状态。
四、实验流程图五、实验连线1、244的cs连接到CPU地址A15,Y7—Y0连接开关K1-K8;2、273的CS连接到CPU地址A14,Q7-Q0连接到发光二极管L1-L8;3、该模块的WR,RD连接CPU的WR,RD,数据线AD7-AD0,地址线A7-A0分别与CPU的数据线AD7-AD0,地址线A7-A0相连接。
六、程序源代码(略)七、实验结果通过开关K01 到K08 可以对应依次控制LED 灯的L1 到L8 ,即当将开关Ki 上拨时,对应的Li 被点亮,Ki 下拨时,对应的Li熄灭。
此外,如果将开关拨到AAH 时,将会产生LED 灯左移花样显示;如果开关拨到55H 时,将会产生LED 灯右移花样显示。
七、实验心得通过本次实验,我了解了TTL 芯片扩展简单I/O 口的方法,同时也对数据输入输出程序编制的方法有一定的了解与掌握,对利用单片机进行I/O 操作有一个初步体会,实验使我对自己在课堂上学的理论知识更加理解,同时也锻炼了我的动手操作能力。
实验二可编程定时计数器8254实验一、实验目的1、了解可编程定时器/计数器8254 实验了解计数器的硬件连接方法及时序关系;2、掌握8254 的各种模式的编程及其原理,用示波器观察各信号之间的时序关系。
第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页共页系别:理学院应用物理系实验日期 2016年11月19日专业班级:应物42班组别____________ 实验报告日期 2016年月日姓名:茹世浩学号: 2140903034 报告退发 ( 订正、重做) 1.实验目的学习8086汇编语言程序的基本结构和顺序程序设计的基本方法。
2.实验设备微型电脑、、、3.实验原理顺序程序是控制流仅有一个走向的程序,它主要用于解决一些无需进行判断分支,也无需循环执行的简单问题。
本节的实验内容与乘法和除法运算有关。
无符号数乘法运算使用MUL指令,有符号数乘法运算使用IMUL指令。
乘法运算属于隐含操作数的运算,因此在使用乘法指令前,需要先将乘数放入AL〔8位乘法〕或AX〔16位乘法〕中。
乘法指令执行后,乘积在AX〔8位乘法〕或DX:AX〔16位乘法〕中。
无符号数除法运算使用DIV指令,有符号数除法运算使用IDIV 指令。
除法运算属于隐含操作数的运算,因此在使用除法指令前,需要先将被除数放入AX 〔8位除法〕或DX:AX〔16位除法〕中。
当除数为8位时,被除数应为16位;除数为16位时,被除数应为32位。
对无符号数除法,当被除数字长不够时,高位部分可直接补0;而对有符号数除法,当被除数字长不够时,必须使用符号扩展指令进行扩展。
除法运算执行后,结果在AX〔8位除法〕或DX:AX〔16位除法〕,其中AL〔8位除法〕或AX〔16位除法〕中是商,AH〔8位除法〕或DX〔16位除法〕中是余数。
4.实验内容在NUM变量中定义了5个有符号数〔字节类型〕,分别是U= 09H,V=16H,W=04H,X=17H,Y=05H,计算〔U+V-W*X〕/Y,将结果显示在屏幕上。
程序流程图如图错误!文档中没有指定样式的文字。
-1。
开始[NUM]=U,[NUM+1]=V,[NUM+2]=W,[NUM+3]=X,[NUM+4]=Y第一步:计算W*X1. [NUM+2]→AL〔数据W送AL〕2. AL*[NUM+3]→AL〔W*X乘积送AL〕→BL〔乘积备份到BL〕第二步:计算U+V-W*X1. [NUM]→AL〔数据U送AL〕2. AL+[NUM+1]→AL〔U+V之和送到AL〕3. AL-BL→AL〔U+V-W*X,结果送到AL〕第三步:计算〔U+V-W*X〕/Y1. AL符号扩展到AX2. AX / [NUM+4]→AX 〔〔U+V-W*X〕/Y,商在AL中〕第四步:显示结果的高4位1. AL中的结果暂存到BL2. AL逻辑右移4位〔取高4位〕3. AL的内容转换成ASCII码4. 显示第五步:显示结果的低4位1. BL中暂存的结果送到AL2. 保留AL中低4位,高4位清03. AL的内容转换成ASCII码4. 显示返回DOS图错误!文档中没有指定样式的文字。
微型计算机原理与接口技术第一次实验报告实验者姓名:实验者学号:所在班级:报告完成日期:20年月日实验二分支程序的设计一、实验目的1.学习提示信息的显示及键盘输入字符的方法。
2.掌握分支程序的设计方法。
二、实验内容在提示信息下,从键盘输入原码表示的二位十六进制有符号数。
当此数大于0时,屏幕显示此数为正数;当此数小于0时,屏幕显示此数为负数;当此数等于0时,屏幕显示此数为零。
三、实验调试过程利用-u命令进行反汇编,结果如下。
三个CMP语句运行完的地址如图所示,第一个CMP运行完的是29H输出结果的地址如下图所示:首先对输入为负数时进行验证:输入FFH,设置一个断点在29H,利用-t命令观察跳转,结果如图:可以看到,程序最终正确的转入输出负的分支。
再输入正数11H,利用-t观察整个比较过程如下:可以看到,程序最终正确的转入输出正的分支。
最后输入00H,利用-t观察整个比较过程如下:可以看到,程序最终正确的转入输出0的分支。
四、实验框图及程序代码实验框图:程序代码:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDA TA SEGMENT;定义结果信息MESS1 DB 'INPUT DATA:',0DH,0AH,'$'MESS2 DB 'THIS DATA IS+',0DH,0AH,'$'MESS3 DB 'THIS DATA IS-',0DH,0AH,'$'MESS4 DB 'THIS DATA IS ZERO',0DH,0AH,'$'DA TABUF DB 3 ;定义最大可输入字符长度ACTLEN DB ? ;实际输入字符长度STRING DB 3 DUP(?) ;输入字符缓冲区DA TA ENDSSSEG SEGMENT PARA STACK 'STACK'DB 50 DUP(0)SSEG ENDSCODE SEGMENTASSUME CS:CODE,SS:SSEG,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV AX,SSEGMOV SS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21HMOV AH,0AHMOV DX,OFFSET DATABUFINT 21HCRLFMOV AL,STRINGCMP AL,38HJAE ISNEGCMP AL,30HJNZ ISPOSMOV AL,[STRING+1]CMP AL,30HJNZ ISPOSJMP ISZEROISPOS:MOV DX,OFFSET MESS2MOV AH,09HINT 21HJMP DONEISNEG:MOV DX,OFFSET MESS3MOV AH,09HINT 21HJMP DONEISZERO:MOV DX,OFFSET MESS4MOV AH,09HINT 21HJMP DONEDONE:MOV AX,4C00HINT 21HCODE ENDSEND START五、实验结果及分析编写的汇编程序EX2.ASM经过汇编MASM与链接LINK生成可执行文件EX2.EXE,测试如下:可见,程序能够正确判断输入数据的正、负、零情况。
微机原理实验报告概述:微机原理是计算机科学与技术专业中的一门重要课程,通过实验学习,可以加深对计算机内部运行原理的理解,提高软硬件的开发和调试能力。
本实验报告将介绍我对微机原理实验的学习和思考。
实验一:二进制转换实验在这个实验中,我首先了解了二进制数的概念以及其和十进制数的转换方法。
通过实际操作,我加深了对计算机内部数据表示方式的理解。
这对于后续学习计算机系统结构和编程语言至关重要。
实验二:逻辑门电路实验逻辑门电路是计算机硬件的基础组成部分,通过实验,我学会了使用逻辑门芯片构建各种逻辑电路,并能够通过真值表分析和验证逻辑电路的正确性。
这对于理解计算机内部的数据处理和控制逻辑有着直接的帮助。
实验三:运算器设计实验在这个实验中,我通过学习和设计算术逻辑单元(ALU),了解了计算机的算术操作过程,并能够通过运算器实现基本算术运算。
这对于理解计算机内部数据的处理和计算机指令的执行有着重要的意义。
实验四:存储器与外设实验存储器是计算机系统的重要组成部分,通过实验,我深入了解了存储器的类型、组织结构和访问方式,并通过外设与存储器的交互,实践了计算机系统的输入和输出过程。
实验五:微处理器实验微处理器是计算机系统中最核心的部件,通过实验,我学习了微处理器的基本运行原理,能够通过汇编语言编写程序,并通过微处理器执行程序实现特定的功能。
这个实验为我今后学习计算机体系结构和操作系统打下了坚实的基础。
实验总结:通过这几个实验,我深入了解了微机原理课程的实践内容和相关知识。
实验的过程中,我不仅学会了使用仪器设备和工具,还培养了自己的动手能力和团队合作精神。
通过不断的实践,我对计算机内部结构和运行原理有了更深刻的理解,也提高了我的问题解决能力和创新思维。
未来展望:微机原理实验的学习只是计算机科学与技术专业中的一小部分。
我希望在今后的学习过程中能加深对计算机体系结构、操作系统、编程语言等方面的学习,并不断深入钻研,成为一名优秀的计算机科学与技术专业人才。
滨江学院微机原理综合实验实验报告学生姓名学号专业信息工程班级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)熟悉源程序汇编、连接命令的使用方法即要回答的内容。
一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。
二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。
(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。
(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。
2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。
(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。
(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。
3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。
(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。
(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。
4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。
(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。
(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。
三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。
2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。
3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。
4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。
四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。
校区实验报告课程名称____________________________ 专业班级_____________________________ 学生及学号____________________________指导教师____________________________实验地点————————————————2015 ~2016 学年第二学期《微机原理与接口技术》实验一(1)实验名称存贮器部数据传送姓名系院专业电子信息类班级学号实验日期2016.6.14 指导教师成绩一、实验目的和要求1、初步掌握星研集成环境工具软件的使用方法。
2、掌握存储器部不同位置间数据传送的方法。
3、认真预习本节实验容,尝试自行编写程序,填写实验报告。
二、实验容(包括实验步骤和代码)1、编写源程序,要求将数据段中3000H~30FFH 单元的容传送给6000H~60FFH 单元中。
2、编译、连接所编写的源程序。
3、执行程序前,利用存贮器窗口将DS:3000H~300FH 中的数据改为11、22、33、44、55、66、77、88、99、AA、BB、CC、DD、EE、FF、00,存贮器窗口支持数据的直接修改功能,在相对应的地址中直接输入数据即可。
4、进入调试状态后,分别以“全速运行”、“全速断点”、“单步”、“单步进入”等方式运行程序,同时在工作区窗口的CommonRegister 视图中查看本程序所使用的寄存器(CX、DI、SI)容的变化。
5、在如下图所示的存贮器窗口中检查程序运行结果是否正确。
程序如下:.MODEL TINY ;memory mode : tiny.STACK 100 ;堆栈.CODE ;开始程序段START: MOV AX,DATAMOV DS,AXMOV ES,AXNOPMOV CX,100HMOV SI,3000HMOV DI,6000HCLDREPE MOVSBMOV CX,100HMOV SI,3000HMOV DI,6000HREPE CMPSBJNE ERRORTRUE: JMP $ERROR: JMP $END START三、实验结果及其分析1、通过该实验,成功地将数据段中3000H~30FFH 单元的容传送到了6000H~60FFH 单元中。
微机原理的实验报告一、实验目的本实验旨在深入理解微机原理的相关知识,并通过实践操作,掌握微机原理的实验方法与技巧。
二、实验内容1. 搭建微机实验系统:根据实验所需,搭建适当的微机实验系统,包括各种硬件设备的连接与设置。
2. 硬件接口的实验:通过连接不同的硬件接口,进行实验操作,学习硬件接口的使用方法和原理。
3. 程序设计与调试实验:使用相应的汇编语言或高级语言,编写程序并进行调试,观察程序的执行结果。
4. 中断实验:通过调用不同的中断服务例程,进行实验操作,学习中断的使用原理和应用场景。
三、实验步骤与结果1. 实验步骤:(1) 搭建微机实验系统:按照实验指导书的要求,连接各种硬件设备,确保能够正常工作。
(2) 硬件接口的实验:选择一个硬件接口,例如并行口,通过编写相应的程序,实现读取和输出数据的功能。
观察实验现象并记录。
(3) 程序设计与调试实验:根据实验要求,选择适当的编程语言,编写相应的程序,并进行调试。
观察程序的执行结果,并记录相关数据。
(4) 中断实验:选择一个中断服务例程,例如键盘中断,通过编写相应的程序,实现对键盘输入的响应。
观察实验现象并记录相关数据。
2. 实验结果:(1) 硬件接口的实验结果:通过编写程序并连接硬件接口,成功读取和输出数据,实现了相应的功能。
(2) 程序设计与调试实验结果:编写的程序能够正确执行,并得到了预期的结果。
(3) 中断实验结果:编写的程序能够响应相应的中断信号,并实现了对键盘输入的处理。
四、实验分析与讨论1. 实验分析:通过本次实验,我们深入了解了微机原理的相关知识,并通过实践操作,掌握了微机原理的实验方法和技巧。
2. 实验讨论:在实验过程中,我们遇到了一些困难和问题,例如硬件接口的连接和调试,程序的编写和调试等。
但通过彼此的合作与讨论,我们最终解决了这些问题,并成功完成了实验。
五、实验总结通过本次实验,我们对微机原理有了更深入的理解,并通过实践操作,掌握了微机原理的实验方法和技巧。
微机(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 •熟悉8086汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇编、 连接、执行的过程,并利用 Turbo Debugger 调试汇编程序。
2. 熟悉8086指令系统的数据传送指令,掌握寻址方式。
3. 熟悉8086指令系统的算术运算指令。
掌握循环结构汇编语言程序的编制。
实验内容:1、P121 14 题程序框图:DW 128 DUP ⑺STACKS ENDSDATAS SEGMENT;数据DATA SEGMENTORG 1000HBCD1 DD 90000010H,12345678HORG 2000HBCD2 DD 90000020H,23456789H;堆栈段 源代码:STACKS SEGMENT STACKDATA ENDSCODES SEGMENT;代码段ASSUMECS:CODES,DS:DATASSTART: MOVAX,DATAS;初始化MOV DS,AXMOV CX,8 ;循环次数 MOV BX,0 ;指针 CLCJ进位清零L00P1: MOVAL,[BX+1000H];BCD1 ADCAL,[BX+2000H];BCD1+BCD2AAA J分离修正MOV [BX+2000H],AL;移到要求的位置INC BX ;指针指向下一个子节LOOPLOOP1MOV AX,4C00H ;退出程INT 21HCODES ENDSSTART结果:2、P121 15 题程序框图: 源代码:STACKS SEGMENT STACK;堆栈段DW 128 DUP ⑺STACKS ENDS DATAS SEGMENT;数据段ENDORGDB2000H 80H,81H,82H,83H,00H,01H,02H,03H,84H,85H DATAS ENDSCODES SEGMENT ;代码段 START: L1:LODSBL2:LOOP L1 ASSUMECS:CODES,DS:DATASMOVAX,DATAS;初始化 MOV DS,AX MOVSI,2000H J MOV CX,10 ;字节数 MOV DL,0FFH ;最小的有符- CMP AL,DLJNG L2MOV DL,ALMOV DS:[2000H],DL MOV AX,4C00H ;退出程序 INT 21H ;最大数存入2000h 单号字节数据CODES ENDS END START 3、P195 6 题 程序框图源代码:STACKS SEGMENTDWSTACK128 DUP(?);堆栈段JSTACKS ENDSDATAS SEGMENT;数据段ORG1000HN1DW1111HN2DW2222HN3DW3333HM1DW0M2DW0M3DW0DATAS ENDSCODES SEGMENT;代码段ASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS;初始化MOV DS,AXMOV AX,N2MUL N3;B*CMOV M3,AXMOV M2,DXMOV AX,N3MUL N1;A*CADD M2,AXADC M1,DXMOV AX,4C00H;退出程序INT 21HCODES ENDSEND START结果:醪DOSBox DJ4h Cpu speedt 3000 cycles. Frames kip 0, Program: DEBUGS Trace Irrterrupt-tAX-1CBS BX=O900 CX=1137 »S=1C 庐ES=1C35 SS=1CA5 1DB6:00G5 A1GZ10Trftce Interruptkd ds:1000 DX=O0OO SP=G10O BP=0900 SI=G0OO DI=0OQO CS=1DB6 IP=O00g MU UF DI PL NZ NA FO NC MOU AX^ElOOgJ1CB5: IODO 11 11 E乙祝33 33 1CB5:1010 BB B5 1C BE D8 fit 1CB5:1020 16 G6;10 Al 04 10 1CB5: 1G30 66 10 B8 60 处CD 1CB5:1CHQ e© 00 00 00 00 00 ***Dup1icate Line(s)*** 1CB5:10?0 GO 0© 00 00 QG 00rogram terminated BC = 0 M lcbS:ICG©1CB5:1600 11 11 22 22 33 33 1CB5:10101C 8E D6 Al1C跖:1G2O 16 66 10 Al CH 10 1CB5: 1G30 66 10 B8 D0 4C CD 1CB5:164Q ©0 Q0 00 00 00 GO k**Duplicate Linets)*** 1CB5:1670 GO 00 00 GO GO 00 kx 00 00-00 00 00 00 00 GE 10-F?昂€4 10 A3F7 Z6-00 10 61 06 6821 GG-00 GO eo oe 0000 00-00 00 60 00 0000 <30-00 0069 GG-36GEF7Z10010-F726-00O0-0GGO-00D0261000004、P196 12 题程序框图36eA&81&&©'01OOw■ n i_r P ■■■■■:RS*,X? *,w®,...?..u&.....8.LM!……00C6€40100GO921006000000A3080000载囹己臭制在QQ或者wo胡文档中右■■ U ■ X J H Ta ■ BI ■ A ■■00 00-00 00 G0 00 00 G0 00 00 ......................................源代码:STACKS SEGMENT STACK ;堆栈段DW 128 DUP⑺;STACKS ENDSDATAS SEGMENT ;数据段STRING1 DB'AAAA'STRING2 DB'AAAa'DATAS ENDSCODES SEGMENT ;代码段ASSUME CS:CODES,DS:DATASAXQATAS ;初始化DS,AX AX,DS ES,AX SI,STRING1 DI,STRING2 CX,4STRING1,STRING2 LABNE AL,'Y' EXIT AL,'N'AX,4C00H ;退出程序 21H结果:[>0: ■ J ir ] IPLL L J59H 是N 的ascII 码实验中出现的问题及解决:总体来说,实验中最大的阻碍是 64位系统不能使用masm 或者轻松汇编等软件,造成了许多困难,解决办法是在网上下载了dosbox ,输入命令 mount ch:\study\masm, h:\study\masm 是我电脑中masm.exe 所在的位置,不知道什么原因masm611用不了这个方法,在网上重新下载了 masm5,和debug32至此,算是 解决了“非编程困难”。
CODES ENDSENDSTARTSTART: MOVMOV MOV MOV LEA LEA MOVREPZ CMPSBJNZ MOV JMPLABNE: MOV EXIT: MOVINT 岸MF 黑雲 节雌器悵.白■巴花先】F3|'.v.SS=lOl5CX=0000SS^ICASSS=1CA5CX (-MXX-)SS=1CA5REPZ CMPS BDX=00OO CS=1CBB JMZDX=0OOOCS=1CB6 MOU DX=GOO 0 CS^ICBS JMP DX=QOO 0CS=1CB6 MOU DX-0000 CS=1CB6 INTSP=0100 BF=GG0Q IP=6©13 NU UP DIShort 001D SP=G100 IP=0©1J] AL.Sgh BP=0000 MU UF DI SF=01G0 I [F=eei]| i Short 601F BF=000O NU UF DI £1=0004 FL ZR MASI=©004FL ZB NA DI-0006PE MC DI=Q0GG FE NCSP=0100 IP=06igBP =OG00MU UP DI PL ZR NA DI=0GQ8 PE MCSP=O1O0 IP=0O^ Zlh ;End BP=0060 MU UP DI Programsi^eecH PL ZR MADI=Q008PE MC DI=00G>2 23 MC在编程上,利用实验指导书和图书馆的资料,问题都比较顺利的解决了,需要注意的问题是,在编第一个程序时还不熟练,入逗出现了在中文输入法的情况下输号的错误。
实验的收获与心得通过这次实验,练习了汇编语言程序的编写、汇编、连接、执行的过程,编程语言就是这样,有的时候怎么学都记不深刻,自己实际编程体验一下被折磨的感觉,印象就深刻了。
还练习了对于debug的使用,可能是使用不熟练的原因,个人感觉debug 使用的时候很麻烦,不过随着使用次数的增加和对其功能的熟悉,慢慢的调试的过程也变顺利了。
至于编程的框架,在以前学习c 语言的时候就有过接触,只不过在汇编里框架要更加详细一点,否则指导意义不大。