微机原理实验1和实验2报告

合集下载

微机原理及应用实验报告

微机原理及应用实验报告
2•深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21

微机原理与应用第一次实验报告

微机原理与应用第一次实验报告

微机原理与应用实验一、实验二实验报告电92 雷云泽2009010941 实验一简单计算机系统基本模块设计1一、实验目的1.掌握简单计算机系统的指令系统2.掌握简单计算机基本模块的设计方法3.巩固EDA电路仿真和调试的方法二、实验任务包括练习指令编码设计寄存器组模块、设计RAM模块、设计I/O端口及其映射模块、设计和检测ROM模块1.练习指令编码阅读项目任务书的简单计算机指令系统,理解其中的7条R型指令AND、OR、ADD、SUB、ADDC、SUBC、SLT,和2条I型指令的LW、SW。

写出表1-1指令的编码和功能说明。

表1-1 指令编码练习2.设计寄存器组模块(1)任务要求在R类型指令中有3个操作数,其中2个操作数来自寄存器组,作为算术逻辑模块ALU的输入,另1个操作数是ALU 的输出,需写回寄存器组中。

所以,寄存器组模块需要1个写通道、2个读通道。

在寄存器组读操作时,需给出要读寄存器的寄存器号,寄存器组将该寄存器号对应的内容从输出端口输出;在寄存器组写操作中,需给出要写入寄存器的寄存器号和要写入的数据,寄存器组模块将在控制信号的作用下把数据写到指定的寄存器中。

寄存器组模块的封装图见1-1,包含2个异步读通道、1个同步写通道,内部包含4个8位寄存器(分别称为R0、R1、R2、R3,对应的二进制编号分别为00、01、10、11),1个2-4译码器和2个8位4选1多路选择器,其中每个寄存器都是带时钟使能和异步复位端口的8位D 触发器。

可利用QuartusII的MegaWizard下LMP_FF、LMP_DECODE、LPM_MUX进行设计。

寄存器组模块信号说明:输入信号:N1[1..0]:读通道1的寄存器号N2[1..0]:读通道2的寄存器号ND[1..0]:写通道的寄存器号DI[7..0]:写通道的输入数据CLK:时钟脉冲信号,上升沿有效REG_WE:写允许,为1时,在CLK上升沿,将数据DI写入ND指定的寄存器;为“0”时,禁止对寄存器阵列进行写操作。

微机原理实验报告

微机原理实验报告

微机原理实验报告概述:微机原理是计算机科学与技术专业中的一门重要课程,通过实验学习,可以加深对计算机内部运行原理的理解,提高软硬件的开发和调试能力。

本实验报告将介绍我对微机原理实验的学习和思考。

实验一:二进制转换实验在这个实验中,我首先了解了二进制数的概念以及其和十进制数的转换方法。

通过实际操作,我加深了对计算机内部数据表示方式的理解。

这对于后续学习计算机系统结构和编程语言至关重要。

实验二:逻辑门电路实验逻辑门电路是计算机硬件的基础组成部分,通过实验,我学会了使用逻辑门芯片构建各种逻辑电路,并能够通过真值表分析和验证逻辑电路的正确性。

这对于理解计算机内部的数据处理和控制逻辑有着直接的帮助。

实验三:运算器设计实验在这个实验中,我通过学习和设计算术逻辑单元(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)熟悉源程序汇编、连接命令的使用方法即要回答的内容。

微机原理实验报告_2

微机原理实验报告_2

实验一汇编语言的编译、链接和调试一、实验目的1、学会使用masm对汇编源程序进行编译、链接、调试、运行。

2、掌握汇编语言的程序格式。

3、巩固所学的汇编语言指令。

二、实验环境1、硬件:PC 微机2、软件:宏汇编MASM 软件三、实验原理1、汇编语言程序的上机与处理过程2、汇编语言的程序格式(1)汇编程序一般由若干段组成,每个段都有一个名字,以SEGMENT作为段的开始,以ENDS作为段的结束,这两者前要冠以相同的名字作为段名。

(2)代码段和堆栈段必不可少,数据段和附加段可根据需要设置。

堆栈段的SEGMENT之后有关键字STACK。

代码段中有伪指令ASSUME告诉汇编程序,在各种指令执行时所要访问的各段寄存器将分别对应哪一段。

(3)源程序的每一段是由若干行汇编语句组成,每一行只有一条语句,且不能超过128个字符,但一条语句允许有后续行,最后均以回车结束。

(4)整个源程序必须以END语句结束,它通知汇编程序停止汇编。

四、实验内容进入DOS环境中相应的目录下。

如汇编软件的文件来为:D:\MASM,则对应的操作为(1)选择windows的“开始”→“程序”→“附件”→“命令提示符”(2)在DOS命令提示符下输入如下命令(其中带下划线部分为输入内容)。

C:\Documents and Settings\new>D:D:\>CD MASMD:\MASM>EDIT TEXT.ASM进入编辑程序,在其环境下输入编好的源程序,然后在盘上生成一个扩展名为.asm的文件。

程序示例DATA SEGMENTDA1 DB 10H,20H,30H,40HDA2 DB 0F0H,0B0H,0A0H,90HDA3 DB 00H,00H,00H,00HDATA ENDSSTACK1 SEGMENT PARA STACKDB 10 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AL,[DA1]ADD AL,[DA2]MOV [DA3],ALMOV AL,[DA1+1]ADC AL,[DA2+1]MOV [DA3+1],ALMOV AL,[DA1+2]ADC AL,[DA2+2]MOV [DA3+2],ALMOV AL,[DA1+3]ADC AL,[DA2+3]MOV [DA3+3],ALCODE ENDSEND START3. 用宏汇编程序MASM,将扩展名为.ASM的源程序汇编成目标程序,即生成盘上扩展名为.OBJ的文件。

微机原理的实验报告

微机原理的实验报告

一、实验目的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. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。

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

微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)

微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)

微机原理实验报告(两个32位无符号数乘法程序以及码制转换程序设计)----05f17e0a-6eb2-11ec-86e4-7cb59b590d7d微机原理实验报告姓名:班级:学号:时间:实验名称:基本汇编语言程序设计实验1:两个32位无符号数乘法程序实验2:代码系统转换程序设计<1>十六进制到ascii<2>从二进制到ascii一、程序流程图1、两个32位无符号数乘法程序:2.十六进制到ASCII二、程序的实现:1、实验一程序:名称32位多数据段mulnumdw0000,0ffffh,0000,0ffffh,4dup(?)dataendsstack'stack'db100dup(?)斯塔克恩兹codesegment假设:代码,ds:data,ss:stack,es:datastartprocfarbegin:pushdsmovax,0pushaxmovax,datamovds,axmoves,axleabx,mulnummulu32:movax,[bx]movsi,[bx+4]movdi,[bx+6]乳化液mov[bx+8],axmov[bx+0ah],dxmovax,[bx+2]mulsiaddax,[bx+0ah]adcdx,0mov[bx+0ah],axmov[bx+0ch],dxmovax,[bx]muldiaddax、[bx+0ah]adcdx、[bx+0ch]mov[bx+0ah]、axmov[bx+0ch]、DXFmovax,[bx+2]muldipopfadcax,[bx+2]adcdx,0mov[bx+0ch],axmov[bx+0eh],dxretSTARTENDPCODENDSENDSTART2、实验二的程序:1)名称HEX_uu更改为uuidatasegmentl1dw2stringdb34h,98hl2dw?缓冲区db2*2dup(?)数据端stacksegmentparastack'stack'db100dup(?)stackends代码段assumecs:code,ds:data,es:data,ss:stackstartprocfarbegin:pushdsmovax,0pushaxmovax,datamovds,axmoves,axmovcx,l1leabx,stringleasi,buffermovl2,cxmovcx,ax再次:moval,[bx]movdl,alandal,0fhcallchangemoval,dlpushcxmovcl,4shral,clpopcxcallchangeincbxretstartendpchangeproccmpal,10jladd_0addal,'a'-'0'-10add_0:addal,'0'mov[si],alincsiretchangeendpcodeendsendstart2)namebinary_to_acsiidatasegmentnumdw4f78hstringdb16dup(?)dataendsstack'stack'db100dup(?)斯塔克恩兹codesegment假设:代码,ds:data,ss:stack,es:datastartprocfarbegin:pushdsmovax,0pushaxmovax、数据MOVDS、axmoves、axleadi、字符串movcx,lengthstringpushdipushcxmoval,30h;repstowpopcxpopdimoval,31hmovbx,numagain:rclbx,1jncnextmov[di],alnext:incdiloopagainretstartendpcodeendsendstart三、实验感想:在实验过程中,我根据书慢慢理解了这些代码的含义,并纠正了代码中的错误。

微机原理实验报告

微机原理实验报告

校区实验报告课程名称____________________________ 专业班级_____________________________ 学生及学号____________________________指导教师____________________________实验地点————————————————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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

哈尔滨工程大学实验报告实验名称:熟悉实验环境及简单程序设计班级:06-521学号:06052122姓名:张禹实验时间:2009-7-3成绩:指导教师:王向红实验室名称:水声电子信息实验中心_哈尔滨工程大学实验室与资产管理处制1.实验名称:熟悉实验环境及简单程序设计2.实验目的:1. 熟悉实验环境。

2.掌握基本DEBUG命令。

3.熟练掌握汇编语言编写、调试和运行的基本方法。

4.掌握数据在寄存器、内存中的存放方式和寻址方式。

3.实验仪器:pc机一台4.实验内容与实验步骤:1.编写程序,移位相加指令实现将AL寄存器中的无符号数乘以10。

思考题:若(AL)*10的结果较大,超过了一个字节的表示范围,编程时如何处理?请编程调试。

2.多字节加法程序:编程实现两个32位二进制数据的加法程序3.给出一组数据:1234H,3456H,3455H,1111H,0FFFFH,0001H编程分别实现:1、将以上数据视为无符号数找出其中最大值。

2、将以上数据视为带符号数找出其中最大值。

思考:若要分别求出以上两种情况的最小值,程序将要做何改动?5.实验原理:实验1用移位相加实现乘以10,乘以10即是(2+8),左移一位相当于乘以2,所以先将AL的数左移一位后存入BL中,然后再将AL的数再左移两位,此时的AL存储的值左移了三位相当于乘以8,BL的值是左移了一位的数即乘以2,因此将AL的值加上BL 的值便可以的到乘以10的结果。

如果AL*10的值较大,则可以将寄存器换用AX和BX,将原来的值存入AX的低八位,高八位添0,利用上面同样的方法可得到乘以10的结果。

实验2要实现两个32字节的数相加,则必须采用分布相加的方法。

应为所有的寄存器最多为16位,所以得先将32位的低16位相加,让后两高16位和低16相加的进位三者相加,注意此时仍可能得到一进位。

实验3要找出一组数据的最大或者最小值,采用逐个比较的方法,即首地址的数放入AX寄存器然后逐个与后面的数比较,如果AX寄存器的数大于所比较的数则继续与接下来的比较,如果小于后的数则将后面的大数存放到AX寄存器,一直比到最后一个数后该组数据的最大值就存放再AX中了。

框图如下:六、试验程序及结果分析实验一:较小的数乘以10(1)程序:DATA SEGMENTBUF1 DB 02HBUF2 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,BUF1SAL AL,1SAL AL,1SAL AL,1ADD AL,BLMOV BUF2,ALMOV AH,4CHINT 21HCODE ENDSEND START(2)结果分析:实验一:较大的数乘以10(1)程序:DATA SEGMENTBUF1 DB 8FHBUF2 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AH,00HMOV CX,BUF1MOV BX,AXSAL CX,1SAL CX,1ADD CX,BXMOV BUF2,CXMOV AH,4CHINT 21HCODE ENDSEND START(2)结果分析:实验二:多字节加法(1)程序:DATA SEGMENTX DD ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,1234HMOV BX,5678HMOV CX,8765HMOV DX,4321HADD AX,CXADC BX,DXMOV WORD PTR[X],AXMOV WORD PTR[X+2],AXMOV AH,4CHINT 21HCODE ENDSEND START(2)结果分析:实验三:最大值最小值比较(1)程序:DATA SEGMENTBUF1 DW 1234H,7745H,00FFH, 0E234H,9031H,0003H,4567H,2BA3H BUF2 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,BUF1MOV CX,7MOV AX,[SI]L1: MOV BX,[SI+2]CMP AX,BXJA L2 ;无符号最大值,JB无符号最小值;JG有符号最大值,JL有符号最小值MOV AX,BXL2: INC SIINC SIDEC CXJNZ L1MOV BUF2,AXMOV AH,4CHINT 21HCODE ENDSEND START(2)结果分析:1、无符号最大值的结果图:2、有符号最大值结果图:3、无符号最小值的结果图:4、有符号最小值的结果图:7.实验体会:通过本次实验,使我熟悉了实验运行环境,也掌握了一些基本的DEBUG 命令,熟悉了汇编语言的编写过程、调试过程和最后的运行。

另外,通过实验将所学知识加以巩固,在实验中理解寄存器、各种指令等。

在实验过程中,让我体会到一种逻辑分析,而且所有程序必须经过上机调试才能确定是否正确,一个问题可以用不同的方法去进行分析,编程,所以我觉得我们可以采用不同的指令完成相同的实验。

这样,可以将我们所学的知识都应用到,对我们理解和掌握课本知识有很大的帮助。

哈尔滨工程大学实验报告实验名称:_ 分支循环程序设计及实现班级:06-521学号:06052122姓名:张禹实验时间:2009-7-3成绩:指导教师:王向红实验室名称:水声电子信息实验中心_哈尔滨工程大学实验室与资产管理处制1.实验名称:分支循环程序设计及实现2.实验目的:1.学习分支程序、循环结构程序的设计和调试方法;2.掌握分支、循环等程序的基本结构。

3.通过循环指令、条件转移指令等完成较复杂程序的设计。

3.实验仪器:电脑一台4.实验内容与实验步骤:1.数据串搬家程序:BUF1开始的8个以字为单位的数据搬移到BUF2。

选做题:将BUF1开始的8个以字为单位的数据中的正数搬移到BUF2。

2.已知数据区STRING1开始的存储单元中,存有26个大写英文字母,将其转换成小写字母后,放到STRING2开始的存储单元中。

3.在题2的基础上继续编程,实现当从键盘输入’1’时,在屏幕上显示26个大写英文字母,当输入’2’时,在屏幕上显示26个小写英文字母。

5.实验原理及流程图:实验1要将BUF1的8个以字为单位的数移动到BUF2中,先将BUF2的偏移地址放入SI,BUF2的偏移地址放入DI,再将[SI]放入寄存器AX中,再将AX 中的值存放到[DI]中,接下来[SI+2],[DI+2],计数器寄存器的值自减1,当计数寄存器的值不等于零时循环执行以上过程。

要将BUF1中的正数搬移到BUF2,首先要判断BUF1中的数据是否大于0,如果大于0,送入BUF2,不是则不送入。

用TEST命令测试最高位是否为0或者1,如果为0,则判断的数为正数,为1则判断的数为负数。

实验2要将STRING1的26个大写字母转换成小写字母放入STRING2中,首先的将大写字母换成小写字母,即将大写字母的ASCII码加上20H即可,因为26个字母的小写ASCII码为61H到7AH,而大写字母的ASCII的为41H到5AH。

让后按照实验1的方法将其放入STRING2中。

实验3在实验2的基础上,如果输入1,则输出STRING1中的大写字母,如果输入2,则输出STRING2中的小写字母,如果输入的既不是1又不是2,则返回DOS系统。

因此需要调用1号命令屏幕输入命令和09号屏幕输出命令。

1号命令输入后,输入的值存入AL,让后将其与1和2的ASCII码与31H和32H比较,根据比较结果执行相应的命令。

6.实验程序及结果分析:实验一:数据搬移(1)程序:DATA SEGMENTBUF1 DW 0234H,4321H,0FE44H,5647H,0E447H,7650H,5555H,0E345HBUF2 DW 8 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,BUF1LEA DI,BUF2MOV CX,7AGAIN:MOV AX,[SI]INC SIINC SIMOV [DI],AXINC DIINC DILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START(2)结果分析:实验一:正数搬移(1)程序:DATA SEGMENTBUF1 DW 0234H,4321H,0FE44H,5647H,0E447H,7650H,5555H,0E345H BUF2 DW 8 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,BUF1LEA DI,BUF2MOV CX,7AGAIN:MOV AX,[SI]INC SIINC SITEST AX,8000HJNZ AGAINMOV [DI],AXINC DIINC DILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START(2)结果分析:实验二:大小写字母转换(1)程序:DATA SEGMENTSTRING1 DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','$'STRING2 DB 27 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,STRING1LEA DI,STRING2MOV CX,26DONE1: MOV AL,[SI]ADD AL,20HMOV [DI],ALINC SIINC DIDEC CXJNZ DONE1MOV AL,'$'MOV [DI],ALMOV AH,4CHINT 21HCODE ENDSEND START(2)结果分析:实验三:大小写字母输出(1)程序:DATA SEGMENTSTRING1 DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','$'STRING2 DB 27 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,STRING1LEA DI,STRING2MOV CX,26DONE1: MOV AL,[SI]ADD AL,20HMOV [DI],ALINC SIINC DIDEC CXJNZ DONE1MOV AL,'$'MOV [DI],ALMOV AH,01HINT 21HCMP AL,31HJNZ DONE2LEA DX,STRING1MOV AH,09HINT 21HJMP DONE3DONE2: CMP AL,32HJNZ DONE3LEA DX,STRING2MOV AH,09HINT 21HDONE3: MOV AH,4CHINT 21HCODE ENDSEND START(2)结果分析:7.实验体会:通过本次实验,使我熟悉了实验运行环境,也掌握了一些基本的DEBUG 命令,熟悉了汇编语言的编写过程、调试过程和最后的运行。

相关文档
最新文档