微机原理实验报告

合集下载

微机原理综合实验报告

微机原理综合实验报告

滨江学院微机原理综合实验实验报告学生姓名学号专业信息工程班级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. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。

四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。

微机原理实验报告

微机原理实验报告

微机原理实验报告班级:指导老师:学号:姓名:实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图图3-1四、参考程序清单DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验结果与分析这次实验依次将相加数与被加数存入AL,BL,依次从低位向高位相加,然后把结果放在内存中。

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

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

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

微机原理综合实训报告

微机原理综合实训报告

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

具体目标如下: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. 完成微型计算机硬件组成实验,掌握微型计算机的基本组成和工作原理。

微机原理实验总结

微机原理实验总结

微机原理实验总结微机原理实验总结一、实验目的和背景:微机原理实验是计算机科学与技术专业的一门重要实验课程,通过该实验能够加深对微机原理的理论知识的理解,同时也提供了锻炼实验技能和培养解决问题能力的机会。

本次实验主要通过实际操作来学习CPU的工作原理,了解计算机的组成和运行过程,并通过搭建系统、调试和测试,加深对计算机工作原理的理解。

二、实验内容:本次实验主要包括以下几个模块的实验内容:1. 实验器材和器件的测试与调试;2. CPU运行状态及信号测试;3. 总线状态测试;4. 存储器的组织和访问方式测试;5. 输入输出接口测试。

三、实验方法和步骤:1. 实验器材和器件的测试与调试在进行实验之前,首先需要对实验器材和器件进行测试和调试,确保器材和器件的正常工作。

具体步骤如下:a. 检查硬件连接是否正确,包括主板、显示器、键盘等部件;b. 检查排线是否插好,开关是否处于正确的位置;c. 将电源插上,开机检查电源是否工作正常;d. 按照实验要求进行相应的仪器设备的调试。

2. CPU运行状态及信号测试通过搭建CPU运行测试电路,观察和测试CPU的运行状态和输出信号。

具体步骤如下:a. 按照实验要求搭建电路,包括主板、CPU、存储器、时钟等;b. 打开电源,上电后等待系统启动,观察CPU的运行状态;c. 使用示波器进行信号测试,观察时钟信号、读写信号、控制信号等。

3. 总线状态测试通过搭建总线状态测试电路,观察和测试总线的状态。

具体步骤如下:a. 按照实验要求搭建电路,包括总线、存储器等;b. 在开关电源的同时观察总线上的信号变化;c. 使用示波器进行信号测试,观察总线控制信号、数据信号等。

4. 存储器的组织和访问方式测试通过搭建存储器组织和访问方式测试电路,观察和测试存储器的组织和访问方式。

具体步骤如下:a. 按照实验要求搭建电路,包括存储器、地址线、数据线等;b. 打开电源,上电后等待系统启动;c. 运行程序,观察存储器的读写操作;d. 使用示波器等设备进行信号测试,观察地址信号、数据信号等。

微机原理软件实验报告

微机原理软件实验报告

实验名称:汇编语言程序设计实验日期: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. 实验内容本次实验主要涉及以下内容:- 微机的基本组成和结构- 微机的工作原理- 微机的存储器和输入输出设备- 微机的指令系统和编程技术4. 实验步骤4.1 实验一:微机的基本组成和结构在这个实验中,我们首先学习了微机的基本组成和结构,包括中央处理器、存储器、输入输出设备等。

通过观察实际的微机硬件设备,我们对微机的组成有了更加直观的认识。

4.2 实验二:微机的工作原理在这个实验中,我们学习了微机的工作原理,包括指令的执行过程、中央处理器的工作原理等。

通过实际操作,我们对微机的工作过程有了更加深入的理解。

4.3 实验三:微机的存储器和输入输出设备在这个实验中,我们学习了微机的存储器和输入输出设备的原理和应用。

通过实际操作,我们了解了存储器的读写过程,以及输入输出设备的工作原理。

4.4 实验四:微机的指令系统和编程技术在这个实验中,我们学习了微机的指令系统和编程技术。

通过实际编写和执行简单的汇编语言程序,我们掌握了微机的编程技术,并了解了指令的执行过程。

5. 实验结果及分析通过以上实验,我们对微机的原理和应用有了更加深入的理解。

我们通过实际操作,掌握了微机的基本组成和结构,了解了微机的工作原理,熟悉了微机的存储器和输入输出设备,掌握了微机的指令系统和编程技术。

这些知识和技能对我们今后的学习和工作都具有重要的意义。

6. 总结通过本次微机原理及应用实验,我们深入了解了微机的基本原理和应用技术。

通过实际操作,我们对微机的组成和工作原理有了更加直观和深入的理解,掌握了微机的存储器和输入输出设备的原理和应用,以及微机的指令系统和编程技术。

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

西安交通大学实验报告课程_ 微机与接口技术第页共页系别__ 生物医学工程_______ __ 实验日期: 年月日专业班级___ __组别___ __ 交报告日期: 年月日姓名__ 学号_ _报告退发 ( 订正、重做 )同组人_ 教师审批签字实验一汇编语言程序设计一、实验目的1、掌握Lab6000p实验教学系统基本操作;2、掌握8088/8086汇编语言的基本语法结构;3、熟悉8088/8086汇编语言程序设计基本方法二、实验设备装有emu8086软件的PC机三、实验内容1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。

编程并显示结果:如果数组是无符号数,求出最大值,并显示;如果数组是有符号数,求出最大值,并显示。

2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:”3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:”4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。

在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序)5、键盘输入一个小写字母(a~z),转换成大写字母显示:请输入一个小写字母(a~z):转换后的大写字母是:6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH四、实验代码及结果1.1、实验代码:DATA SEGMENTSZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组SHOW DB 'THE MAX IS: ','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA ;把数据的基地址赋给DSMOV DS,AXMOV DX,OFFSET SHOW ;调用DOS显示字符串MOV AH,09HINT 21HMOV SI ,OFFSET SZ ;数组的偏移地址赋给SIMOV CX,10 ;存进数组的长度给CXMOV DH,80H ;将数组的第一个数写进DHNEXT:MOV BL,[SI] ;将数组的第一个数写进BLCMP DH,BL ;比较DH和BL中数的到校JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DHNEXT1:INC SI ;偏移地址加1LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值;接下来的程序是将将最大值DH在屏幕上显示输出MOV BX,02HNEXT2:MOV CL,4ROL DH,CL ;将DH循环右移四位MOV AL,DHAND AL,0FH ;将AL高位清零,一位一位进行ASCII码转换CMP AL,09H ;与09H比较大小JBE NEXT3 ;若小于,跳转至NEXT3,证明数值在0-9之间ADD AL,07H ;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7NEXT3:ADD AL,30H ;因为转换为ASCII码要加30HMOV DL,ALMOV AH,2 ;DOS中断显示INT 21HDEC BXJNZ NEXT2MOV DL,'H'MOV AH,2INT 21HCODE ENDSEND START实验结果:1.2、实验代码DATA SEGMENTSZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H ;存进数组SHOW DB 'THE MAX IS: ','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA ;把数据的基地址赋给DSMOV DS,AXMOV DX,OFFSET SHOW ;调用DOS显示字符串MOV AH,09HINT 21HMOV SI ,OFFSET SZ ;数组的偏移地址赋给SIMOV CX,10 ;存进数组的长度给CXMOV DH,80H ;将数组的第一个数写进DHNEXT:MOV BL,[SI] ;将数组的第一个数写进BLCMP DH,BL ;比较DH和BL中数的到校JGE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1;此为无符号数与有符号数的唯一差别,JGE是无符号数的跳转MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DHNEXT1:INC SI ;偏移地址加1LOOP NEXT ;循环,CX减1,一直到CX减为0,DH中存数组的最大值;接下来的程序是将最大值DH在屏幕上显示输出MOV BX,02HNEXT2:MOV CL,4ROL DH,CL ;将DH循环右移四位MOV AL,DHAND AL,0FH ;将AL高位清零,一位一位进行ASCII码转换CMP AL,09H ;与09H比较大小JBE NEXT3 ;若小于,跳转至NEXT3,证明数值在0-9之间ADD AL,07H;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7NEXT3:ADD AL,30H ;因为转换为ASCII码要加30HMOV DL,ALMOV AH,2 ;DOS中断显示INT 21HDEC BXJNZ NEXT2MOV DL,'H'MOV AH,2INT 21HCODE ENDSEND START实验结果2、实验代码DATA SEGMENTBNUM DW 0500HDNUM DB 4 DUP()MES DB 'THE BCD OF '500H' IS: ','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES ;将字符串偏移量写入DXMOV AH,09HINT 21HMOV AX,BNUM ;将0500H存入AX中LEA BX,DNUM ;取DNUM的偏移量MOV DL,0;计算1000的个数COUNT1:SUB AX,03E8H ;AX-1000JC NEXT1 ;不够减,即若CF=1,有借位,转NEXT1 INC DL ;DL+1JMP COUNT1 ;跳转AGAIN1 NEXT1:ADD AX,03E8H ;AX+1000MOV [BX],DL ;将DL(即千位数)存入DNUM中INC BX ;BX+1MOV DL,0 ;DL清零;计算100个数COUNT2:SUB AX,0064H ;AX-100JC NEXT2INC DLJMP COUNT2NEXT2:ADD AX,0064HMOV [BX],DL ;将DL(即百位数)存入DNUM中INC BXMOV DL,0;计算10个数COUNT3:SUB AX,000AH ;AX-10JC NEXT3INC DLJMP COUNT3NEXT3:ADD AX,000AHMOV [BX],DL ;将DL(十位数)存入DNUM中INC BXMOV [BX],AL ;计算个位数MOV CX,4; 接下来的程序是将数值转化为ASCII并在屏幕上显示LEA SI,DNUM ;取DNUM的地址偏移量NEXT4:MOV AL,[SI] ;将DNUM中所存的各个数值转换为ASCII码;;在屏幕上输出显示CMP AL,09HJBE NEXT5ADD AL,07HNEXT5:ADD AL,30HMOV DL,ALMOV AH,2INT 21HINC SIDEC CXJNZ NEXT4CODE ENDSEND START实验结果3、实验代码DATA SEGMENTOUP DB 'THE ASCII OF 7963 IS:','$'A1 DB 07H,09H,06H,03HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET OUPMOV AH,09HINT 21HMOV CL,4MOV SI,0NEXT:MOV AL,A1[SI] ;将A1的第SI个数据传给ALMOV BL,ALOR AL,30H ;加30转换为ASCII码值SHR AL,4AND AL,0FH ;将右移后的高位清零ADD AL,30H ;因为ASCII码与值之间相差30 MOV DL,ALMOV AH,2 ;输出对应的ASCII码INT 21HMOV AL,BLAND AL,0FHADD AL,30HMOV DL,ALMOV AH,02HINT 21HMOV DL,' 'MOV AH,02HINT 21HINC SILOOP NEXTEXIT:MOV AH,4CHINT 21H CODE ENDSEND START 实验结果4、实验代码DATA SEGMENTYI DB 100 DUP(88H)ER DB 100 DUP(00H) ;定义数组MES DB 'THE NUMBER OF COUNTER IS: ','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXMOV CL,100 ;计数器初值MOV CH,00H ;转移次数统计,初值LEA SI,YI ;将内存块1的偏移量给SILEA DI,ER ;将内存块2的偏移量给DI NEXT: MOV AL,[SI]MOV [DI],AL ;将YI中的数据复制到ER中INC SIINC DIINC CHMOV DX,OFFSET MES ;显示字符串MOV AH,9INT 21HCALL COUNT ;调用子程序DEC CL ;计数减1JNZ NEXT ;计数不为零,跳转执行HLTMAIN ENDP ;主程序结束;下面是子程序,实现屏幕显示转移次数功能COUNT PROC NEAR ;定义子程序属性PUSH CX ;CX进栈MOV DH,CHMOV BX,02HNEXT2: MOV CL,4ROL DH,CL ;将DH循环右移四位MOV AL,DHAND AL,0FH ;将AL高位清零CMP AL,09H ;与09H比较大小JBE NEXT3 ;若小于,跳转至NEXT3ADD AL,07HNEXT3: ADD AL,30H ;加30HMOV DL,ALMOV AH,2 ;DOS中断显示INT 21HDEC BXJNZ NEXT2MOV DL,'H' ;显示HMOV AH,2INT 21HMOV DL,0AH ;回车MOV AH,2INT 21HMOV DL,0DH ;换行MOV AH,2INT 21HPOP CX ;CX出栈RETCOUNT ENDP;子程序结束CODE ENDSEND START实验结果5、实验代码DATA SEGMENTINP DB 'PLEASE INPUT (a~z): ','$' ;设置字符串OUP DB 'THE TRANSFORMATION(A~Z) IS:','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET INP ;显示字符串,提示输入MOV AH,9INT 21HMOV AH,1 ;DOS中断调用,从键盘中读取一个字符INT 21HPUSH AX ;AX入栈PUSH DXMOV DL,0DH ;中断调用,回车MOV AH,2INT 21HMOV DL,0AH ;中断调用,换行MOV AH,2INT 21HMOV DX,OFFSET OUP ;显示字符串,输出提示MOV AH,9INT 21HPOP DX ;DX出栈POP AX ;AX出栈SUB AL,32 ;AL减去32,使大写转化为小写;大小写之间的ASCII码值相差32MOV DL,AL ;DOS中断显示结果MOV AH,2INT 21HMAIN ENDPCODE ENDSEND START实验结果:6、实验代码DATA SEGMENTYI DB 44H,33H,22H,99H,00HER DB 44H,33H,22H,99H,00H ;装载数据,必须有后面00HSUM DB 5 DUP()OUP DB '99223344H + 99223344H= ','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET OUP ;显示字符串MOV AH,9INT 21HLEA BP,YI ;在BP中装入YI的地址偏移量LEA SI,ER ;在SI中装入ER的地址偏移量LEA DI,SUM ;在DI中装入SUM的地址偏移量MOV CX,05 ;计数初值CLC ;进位位清零NEXT: MOV AL,[BP] ;将YI中的数据赋给ALMOV AH,[SI] ;将ER中的数据赋给BLADC AL,AH ;YI和ER中的数据带进位的相加MOV [DI],AL ;将相加的结果保存在SUM中INC SIINC DIINC BPDEC CXJNZ NEXT ;结果不为零,跳转到NEXT;上面的程序已经将相加的结果存在了SUM中,下面的程序是将SUM中的结果转化为ASCII 显示MOV CH,05 ;计数器初值NEXT1: MOV DH,[DI-1] ;将所得结果最高位赋给DHMOV BX,02HNEXT2: MOV CL,4ROL DH,CL ;将DH循环右移四位MOV AL,DHAND AL,0FH ;将AL高位清零CMP AL,09H ;与09H比较大小JBE NEXT3 ;若小于,跳转至NEXT3ADD AL,07HNEXT3: ADD AL,30H ;加30HMOV DL,ALMOV AH,2 ;DOS中断显示INT 21HDEC BXJNZ NEXT2DEC DIDEC CHJNZ NEXT1 ;循环显示SUM中的值MOV DL,'H' ;显示HMOV AH,2INT 21HMAIN ENDPCODE ENDSEND START实验结果五、分析与总结通过实验熟练了8086的指令系统和基本的程序设计格式,实验中出现的各种问题通过一步步的分析自行解决的过程,提高了对于各种语句、指令的运用熟练程度实验二8255可编程并行接口实验一、实验目的1、掌握8255芯片结构及工作方式;2、熟悉8255并行口扩展的编程。

相关文档
最新文档