微机原理-实验二-汇编程序1
微机原理及汇编语言程序设计实验指导书
![微机原理及汇编语言程序设计实验指导书](https://img.taocdn.com/s3/m/05826046be1e650e52ea9983.png)
微机原理及汇编语言程序设计实验指导书计算机实验中心目录实验一D E B U G的使用 (3)实验二数制转换程序 (8)实验三数组排序程序 (10)实验四数据的输入与输出程序 (11)实验五子程序设计 (12)实验六宏调用程序设计 (14)实验一 DEBUG的使用【实验目的】1.学习使用DEBUG调试程序的各种命令。
2.掌握8088/8086指令系统---数据传送指令、算术指令。
3.掌握用DEBUG调试程序的方法。
4.掌握8088/8086 CPU寄存器的用途和存储器组织及它们之间的关系。
5.掌握内存操作数及寻址方法。
6.掌握汇编语言伪操作:BYTE PTR,WORD PTR。
7.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。
8.掌握数据传送、算术运算、BCD码调整和循环指令的用法,掌握字符显示的方法。
【实验性质】验证性实验(学时数:2H)【实验内容】一、DEBUG 命令的使用1.敲 DEBUG 进入 DEBUG 环境,显示提示符 '_ '。
2.用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
3.用命令 E100 30 31 32 …… 3F 将30H~3FH写入地址为100H开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?4.用命令 F100 L0F 'A' 将'A'的ASCII码填入内存,用D命令查看结果。
5.用命令 F110 11F 41 将41H 填入内存,用D命令观察结果并比较。
6.用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
7.用R命令将AX,BX内容改写为1234H及5678H。
8.用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH二、8088/8086常用指令练习1.传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,34MOV AL,56MOV CX,75ABXCHG AX,CX2)用U命令检查键入的程序,特别注意左边的机器码。
微机原理及应用实验报告
![微机原理及应用实验报告](https://img.taocdn.com/s3/m/c693a75c680203d8cf2f244c.png)
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
微机原理与汇编语言_实验2_分支程序设计
![微机原理与汇编语言_实验2_分支程序设计](https://img.taocdn.com/s3/m/c3c74a233968011ca2009102.png)
other: mov dx, offset info5 mov ah, 09h int 21h pend: mov ax, 4c00h int 21h end start 四、实验总结 1.通过本次实验我掌握了分支程序的设计方法,掌握宏定义及宏调用的基本方法,了解小写和大写字母 的 ASCII 码表示及其转换方法,了解数字及其它字符在的 ASCII 码表示方法,进一步掌握调试工具的使用 方法。 2.在进行补全实验框架源码的时候,输出字符时会出现乱码的现象,后来查明原因是因为在汇编中会将 字符按 asii 码表转换为二进制数,中文的标点符号 asii 中没有,所以会出现乱码。所以解决这些问题的 方式就是将中文的标点符号改成英文的,但是在汇编中的某些标点符号是有特殊含义的比如说单引号, 是用来表示字符的,对这种情况,可以将其人工将其转换为 asii 表的 10 进制数字 96 即可。 3.在进行习题 1 和习题 2 的练习过程中,曾经误认为输入的就是数字,事实上程序会将从键盘中读入的 数字通过 asii 表转换成二进制数字,所以在进行判断的时候,要与输入数的 asii 表对应的数值进行比对 大小,而不是输入数字本身。
1.3 流程图及程序框图(见图)
2
开始
显示提示信息“Please Press Any Key to input a letter” 及功能号为 1 的接收键盘输入单个字符的指令序列 Y
(AL)<’0’
Y
(AL)<=’9’ Y (AL)<’A’
输入的是数字,显示关信息
Y (AL)<=’Z’ Y 输入的是大写字母,显示信息 Y (AL)<’a’
微机原理与汇编语言 实
姓 名 xxx 学 号 课程名称 实验名称
微机原理实验报告_2
![微机原理实验报告_2](https://img.taocdn.com/s3/m/136261bafbb069dc5022aaea998fcc22bcd1431d.png)
实验一汇编语言的编译、链接和调试一、实验目的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的文件。
微机原理(单片机汇编)实验报告
![微机原理(单片机汇编)实验报告](https://img.taocdn.com/s3/m/4e568521b4daa58da0114a81.png)
软件实验报告软件实验一一、实验目的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个字节存储块各单元内数据对应相同。
微机原理实验汇编程序上机过程
![微机原理实验汇编程序上机过程](https://img.taocdn.com/s3/m/4804ff10b52acfc789ebc9d1.png)
第一节汇编程序的开发过程本节主要介绍了汇编语言源程序的编辑、汇编、连接的方法,DEBUG调试命令及其使用方法。
一、简介汇编语言源程序:用汇编语句编写的解决应用问题的程序。
汇编程序:将汇编语言源程序翻译成机器语言程序的系统。
汇编:将汇编语言程序翻译成机器语言程序的过程。
在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。
(1)编辑软件行编辑软件:全屏编辑软件:WPS、、、WORD、PE等。
当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。
(2)汇编程序有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。
TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。
(3)连接程序用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的机器代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。
(4)辅助工具程序(.EXE)进行汇编语言程序调试和文件格式转换的程序有: 动态调试程序EXE2BIN.EXE 文件格式转换程序CREF.EXE 交叉引用程序编辑、汇编、连接、调试过程如下图所示。
TD(turbo Debugger简称)也是动态调试程序,可在DOS和Windows环境下运行,用户界面十分友好。
二、汇编源程序用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。
为此,需键入:C:>MASM <源文件名>↘或C:>MASM↘按前一种格式键入,屏幕上显示:Microsoft(R) Macro assemble Version 5.00Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reservedOBJ filename[<file>.obj]:Source listing[nul.lst]:Cross-reference[nul.crf]:以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。
《微机原理及汇编语言》实验指导书
![《微机原理及汇编语言》实验指导书](https://img.taocdn.com/s3/m/c64e173ea66e58fafab069dc5022aaea998f4187.png)
《微机原理及汇编语言》实验指导书微机原理和汇编语言实验指导书信息与通信工程学院电气工程系目录实验须知 (3)实验一数据求和实验 (4)实验二循环与分支程序设计实验 (8)实验三中断程序设计实验 (12)实验四屏幕显示程序设计实验 (14)第一部分实验须知1、预习要求实验前认真阅读实验教程中有关内容,明确实验目的和实验任务。
每次实验前应有预习报告,未预习者不允许参加实验。
预习报告中:对软件实验,要求画出程序流程图,编好上机程序;对硬件实验,要求画出实验线路图,拟定实验步骤,画出程序流程图,编好上机程序。
2、实验要求实验是学习“微机原理及汇编语言程序”这门课程的重要环节,实验课请勿迟到,缺席。
爱护设备,保持清洁,不随意更换设备。
认真完成实验任务,实验结果经教师检查,教师对实验内容提问,对完成者做记录。
做硬件实验时,注意断电操作,即所有的接线、改线及拆线操作均应在不带电的状态下进行,严禁带电操作,并注意防止导线堵塞插孔。
发生事故,应立即切断电源,并马上向教师报告,检查原因,吸取教训。
实验完毕,请整理实验设备,再离开实验室。
3、报告要求每次实验后,应递交一份实验报告,报告中应包括下列内容:(1)实验名称、实验人姓名、学号、班级、所用的设备号。
(2)实验目的、任务。
(3)各任务程序流程图、程序清单(应加适量注释)。
(4)硬件实验应画出各任务的完整电路图,包括PC总线与实验用到芯片间全部电路。
(5)记录和分析实验结果。
(6)根据实验目的认真做小结。
第二部分实验实验一数据求和实验一、实验目的1、学习使用DEBUG程序的各种命令。
2、了解计算机取指令、执行指令特别是算术运算指令的工作过程。
3、掌握用DEBUG调试程序的方法。
二、实验内容1、参照教材中有关内容,掌握DEBUG程序的各种操作命令,重点为R——寄存器内容检查命令D——存储器内容检查命令A——汇编命令U——反汇编命令T——跟踪及单步执行命令P——单步执行命令,跳过子程序G——全速执行程序命令。
微机原理实验教程
![微机原理实验教程](https://img.taocdn.com/s3/m/e5e8c4553b3567ec102d8aae.png)
实验一汇编程序MASM的使用Microsoft公司提供了两种汇编程序版本,一种是全型版本宏汇编MASM;一种是小型版本ASM。
ASM的功能是MASM功能的一个子集,它不支持宏汇编、条件汇编等。
所以我们主要讲解MASM的使用。
一、实验环境1.为了对包括Pentium指令在内的汇编语言的源程序文件进行汇编,应有一台Pentium以上的计算机。
操作系统使用DOS5.0以上版本或windows操作系统命令提示符。
2.编辑程序可用EDIT、WPS、WORD等。
3.MASM 5.0以上宏汇编系统,包括:(1)MASM:汇编程序(2)LINK:连接程序(3)CREF:索引程序(4)LIB:库管理程序4.DEBUG调试程序说明:后面的内容假定在E盘上建立了MASM子目录,且上述程序都在该目录中或建立了相应路径。
二、汇编语言源程序上机操作过程用汇编语言编制程序,一般要经历如下步骤:1.编辑源文件用编辑程序EDIT或其它编辑程序建立源程序。
源程序文件必须以.ASM位扩展名存盘。
2.汇编源程序。
由编辑程序所建立的.ASM文件,只是个文本文件,计算机无法执行。
需要经过汇编程序的汇编,使其转为目标代码文件。
它是通过调用宏汇编MASM 程序完成这一汇编操作的汇编程序还将对原文件进行检查,如发现有错,将给出错误原因。
程序设计者可根据它分析和修改源程序,并再经过汇编,直到无误为止,此时得到的是一个目标文件(.OBJ)。
汇编源程序过程如下:先启动DOS,然后才进入汇编环境。
假设MASM系统(以MASM5.0为例)已预先装在硬盘的MASM子目录中。
下面均以E盘上操作为例进行说明。
假设事先用EDIT编辑程序编辑的源程序为EXAM1.ASM,则汇编过程如下:E:\MASM\masmMicrosoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985,1987.All rights reserved.Source filename[.ASM]:EXAM1.ASMSource listing [NUL.LST]:Cross-reference [NUL.CRF]:51698+417454 Bytes symbol space freeO Warning ErrorsO Severe Errors宏汇编程序被调入以后,先显示版本号。
微机原理与汇编语言程序设计实验一
![微机原理与汇编语言程序设计实验一](https://img.taocdn.com/s3/m/b53b0e37f18583d049645936.png)
实验一汇编语言上机环境及基本操作一、实验目地及要求1.学习及掌握汇编语言源程序地书写格式和要求,明确程序中各段地功能和相互之间地关系.2.学会使用EDIT、MASM、LINK、DEBUG等软件工具.3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序地方法.二、实验内容1.汇编语言源程序地建立本例中给出地程序是要求从内存中存放地10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中.设定源程序地文件名为ABC.DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSSTACK SEGMENT STACK ’STACK’STA D B 10 DUP(?)TOP E QU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕地显示状态如图1所示.图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改.2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序地主要功能有以下3点:(1)检查源程序中存在地语法错误,并给出错误信息.(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ.(3)若程序中使用了宏指令,则汇编程序将展开宏指令.源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示.图2 MASM宏汇编程序工作窗口汇编过程地错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种.其中警告错误是指汇编程序认为地一般性错误;严重错误是指汇编程序认为无法进行正确汇编地错误,并给出错误地个数、错误地性质.这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止.3.用连接程序生成可执行程序文件经汇编以后产生地目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(即扩展名为.EXE).连接过程如图3所示.图3 LINK连接程序工作窗口上述提示行回答以后,连接程序开始连接,如果连接过程中出现错误,则显示出错误信息,根据提示地错误原因,要重新调入编辑程序加以修改,然后重新汇编,再经过连接,直到没有错误为止.连接以后,便可以产生可执行程序文件(.EXE文件).4.程序地执行当我们建立了正确地可执行文件以后,就可以直接在DOS状态下执行该程序.如:C:\>ABC本程序当中没有用到DOS中断调用指令,所以在屏幕上看不到程序执行地结果.我们可以采用调试程序DEBUG来进行检查,相关内容请参见实验二.三、实例分析下面通过一个汇编语言源程序地实际例子,来了解汇编语言源程序地建立、汇编、连接、运行地完整过程.给出地程序是从键盘输入10个字符,然后以与键入相反地顺序将10个字符输出到显示屏幕上.设定源程序名为STR.ASM.1.用EDIT建立汇编语言源程序在DOS状态下,调用EDIT编辑程序建立文件名为STR.ASM地汇编源程序,如图4所示.图4 用EDIT建立汇编语言源程序2.用MASM汇编生成目标文件源程序文件建立完毕后,调用宏汇编程序MASM对STR.ASM进行汇编,如图5所示.图5 用MASM汇编生成目标文件3.用LINK进行连接生成可执行文件汇编完毕,程序正确,则可调用LINK进行连接,以生成可执行文件STR.EXE,连接过程如图6所示.图6 用LINK连接生成可执行文件4.程序地运行在DOS状态下,直接键入可执行地程序文件名STR,然后从键盘输入“0123456789”10个数字,输入回车键后,计算机将10个数字倒序排列输出,即“9876543210”.再次键入可执行地程序文件名STR,从键盘输入“abcdefghIj”10个字符,输入回车键后,计算机将10个字符倒序排列输出,即“jihgfedcba”.运行过程及其结果如图7所示.图7 程序地运行状态及结果参考程序:显示字符串data segmentmsg db 'hello world!',0dh,0ah,24hdata endsstack segment stack 'stack'db 16 dup('stack')stack endscode segmentassume cs:code,ds:data,ss:stackmain proc farstart: mov ax,data ;初始化数据段mov ds,axmov dx,offset msg ;字串首地址送DXmov ah,09h ;调用DOS系统功能int 21h ;显示字串mov ax,4c00h ;返回DOSint 21hmain endpcode endsend start实验2 分支程序地设计一、实验目地1)熟悉分支程序地编写.2)学习DOS系统功能调用(INT 21H/08H,AL=ASCII字符)从键盘接收单个字符地用法.3)掌握数据地输入与输出方法.二、实验内容1)用DOS系统功能调用INT 21H地08H功能接收键盘字符(AL=字符),若是 F,显示“This is the first word string.’,若是S,显示“This is the second word string.’,否则退出.2)设计一数据块间地搬移程序三、实验要求1)实验前准备好汇编语言源程序,阅读实验指导书关于调试方法与步骤地内容.2)实验要求在PC机上进行.四、编程提示1)用DOS系统功能调用INT 21H地09H功能显示字符串.2)用P命令执行程序,可看出结果.3)显示字符串参考程序data segmentstr1 db 'this is the first word string.','$'str2 db 'this is the second word string.','$'data endsstack segmentsta db 50 dup (?)top1 equ length stastack endscode segmentassume cs:code,ds:data,ss:stackmain proc farstart: push ds ;将DS入栈mov ax, 00h ;AX置零push ax ; 将0入栈mov ax, data ;初始化DSmov ds, axmov ah, 08h ;键盘输入一个字符int 21h ;字符在AL中cmp al, 'f'jz disp1cmp al, 's'jz disp2jmp dodisp1: mov dx, offset str1 ;显示字符串mov ah, 09hint 21hjmp dodisp2: mov dx, offset str2mov ah, 09hint 21hdo : mov ax, 4c00h ;返回DOS int 21hmain endpcode endsend start实验3 循环程序设计实验一、实验目地1)学习将一个十六位二进制数数转换成四位十六进制数显示地编程方法.2)熟悉循环程序地设计方法.1)学习乘法指令地用法.二、实验内容实现两个字节相乘地程序,并转换成十六进制数显示出结果.23H 20H=?三、实验要求1)分析题目,确定算法,画出程序框图.2)实验前准备好汇编语言源程序.3)实验要求在PC机上进行.四、编程提示1)两个数据放在数据段地DAT1和DAT2 中.2)计算结果转换成ASCII码显示,因此结果地高四位要拼成3,用INT 21H地02H功能(DL=显示字符)显示结果.3)参考程序DATA SEGMENTDAT1 DB 25H ; 25HDAT2 DB 30H ; 30HSUM1 DW ?,?SUM2 DB 10 DUP ('0')TABLE DB '0','1','2','3','4','5','6','7','8','9'DB 'A','B','C','D','E','F'DATA ENDSSTACK SEGMENTST1 DB 100 DUP ('SA')TOP1 EQU ST1 LENGTH ST1STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARSTART: MOV AX, DATA ;初始化数据段 MOV DS, AXMOV AX, STACK ;初始化堆栈段MOV SS, AXMOV AX, 100MOV SP, AXXOR AX, AXMOV BL, DAT1 ;取乘数MOV AL , DAT2 ;取被乘数MOV SI , OFFSET TABLE ;取ASCII码表首地址MOV DI , OFFSET SUM2 ;取结果地址MUL BLMOV SUM1, AX ;存乘积二进制结果; convert binary number in bx to hex 转换成16进制mov BX, AX ;结果送BXMOV CX, 4 ;转换4位数HEX16:PUSH CX ;保护CX MOV CL, 4 ;循环左移4位ROL BX, CLMOV AL, BLAND AL, 0FH ;保留低四位PUSH BX ;保护BXMOV BX, SI ;ASCII码表首地址送BXXLAT ;转换成ASCII码MOV [DI], AL ;存结果地ASCII码INC DI ;地址加一POP BX ;恢复BX中待转换地数POP CX ;弹出CX地计数值LOOP HEX16 ;未转换完,继续; display results on screenMOV AH, 02H ;调用DOS 地02H功能显示MOV CX, 04H ;显示数据地位数MOV DI, OFFSET SUM2 ;送出待显示数据地首地址DON2: MOV DL, [DI] ;显示数据送DL INT 21H ;显示INC DI ;显示数据所在存储单元加一LOOP DON2 ;未显示完,继续MOV AH, 4CH ;返回DOSINT 21HRETMAIN ENDPCODE ENDSEND START五、实验报告1)说明程序结构及功能.2)说明入口参数与出口参数,参数地输人与输出方法. 3)说明调试过程中遇到地问题及解决地方法.4)画出程序框图,打印源程序清单与执行结果.。
微机原理实验2
![微机原理实验2](https://img.taocdn.com/s3/m/b2bb8cbafd0a79563c1e727c.png)
实验2 机器指令和汇编指令编程(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的变化。
机器码汇编指令b8 20 4e mov ax,4e20H05 16 14 add ax,1416Hbb 00 20 mov bx,2000H01 d8 add ax,bx89 c3 mov bx,ax提示:可以用E命令和A命令两种方式将指令写入内存。
注意用T命令执行时,CS:IP的指向。
a dddd:0000(定义在此地址下写入指令)(2)使用Debug,将下面的程序段写入内存,逐条执行,并根据逐条执行后的实际情况填空。
mov ax,ffffmov ds,axmov ax,2200mov sp,0100mov ax,[0] ;ax=______0000_____ add ax,[2] ;ax=_____0000______ mov bx,[4] ;bx=______0000_____ add bx,[6] ;bx=_____0000______ push ax ;sp=____ffee__;push bx ;sp=___ffee___;pop ax ;sp=___ffee____;ax=_____0000____ pop bx ;sp=___ffee____;ax=_____0000____ push [4] ;sp=___ffee___;push [6] ;sp=___ffee___;注:常用到的debug功能:D命令:查看内存中的内容;E命令:改写内存中的内容;U命令:将内存中的机器指令翻译成汇编指令;T命令:执行一条机器指令;A命令:以汇编指令的格式在内存中写入一条机器指令。
R命令:查看、改变CPU寄存器的内容;。
微机原理与应用实验报告_2(汇编语言源程序的建立调试和运行)
![微机原理与应用实验报告_2(汇编语言源程序的建立调试和运行)](https://img.taocdn.com/s3/m/5e2c152edd36a32d737581a6.png)
西华大学实验报告西华大学实验报告(理工类)开课学院及实验室:电气信息学院6A-217 实验时间:年月日装订线五、实验过程记录(数据、图表、计算等) assume ds:data,cs:code,es:datadata segmentbuffer1 db 1,2,3,4,5 ;定义字节buffer2 db 6,7,8,9,0 ;定义字节buffer3 db 100 dup(?) ;定义字节data endscode segmentmain proc farbegin:push dsmov ax,0000hpush axmov ax,datamov ds,ax ;初始化mov es,axlea si,buffer1 ;将buffer1的地址送给si lea bx,buffer2 ; 将buffer2的地址送给bx add bx,4 ;bx+4code segmentmainproc farassume cs:codego:mov si,300h ;将300h给simov di,400h ;将400h给dimov cx,50 ;将50给cxnext:mov al,[si] ;将[ds]:[si]处内存给al mov [di],al ;将al送到ds:[di]处inc di ;di+1dec cx ;cx-1jnz next ;cx不到0,跳到nextmov si,300h ;再将si给300hmov cx,50 ;cx赋予50cld ;清除方向标志位next1:lodsb ;将si处内存读到almov bl,al ;将al复制到blpush cx ;cx入栈lea di,buffer3 ;将buffer2的地址送给bxmov cx,5 ;循环次数m:mov al,[si] ;将ds:[buffer1]处的值给aladd al,[bx] ;al=al+ds:[buffer2+4]mov [di],al ;将al送给ds[buffer3]处inc si ;si+1dec bx ;bx-1inc di ;di+1dec cx ;cx-1jnz m ;cx>=0 则在m处循环mov ah,4c ;结束int 21hretmain endpcode endsend beginendinc si ;si+1mov cl,4 ;给cl赋4ror al,cl ;al循环右移4位pop cx ;cx出栈call disp ;调用disp子程序mov al,bl ;再将bl给alcall disp ;再次调用dispmov dl,' ' ;给dl赋予‘’mov ah,02 ;ah赋予02int 21h ;调用中断,显示字符loop next1 ;循环50次mov ah,4ch ;ah赋予4chint 21h ;调用中断,结束ret ;子程序返回main endp六、实验结果分析及问题讨论disp procand al,0fh ;屏蔽高4位cmp al,09h ;将al与9比较ja asc ;大于9跳到ascor al,30h ;小于9,加30hjmp do0 ;跳到doasc:add al,'A'-0ah ;al加‘a’到10的ASCII do0:mov dl,al ;将al送到dlmov ah,02 ;ah赋予02int 21h ;调用中断,显示字符ret ;子程序返回disp endpcode endsend go。
实验二 汇编语言程序上机过程及调试
![实验二 汇编语言程序上机过程及调试](https://img.taocdn.com/s3/m/918cc237482fb4daa58d4bef.png)
实验报告二课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名实验日期:2014 年 3 月10 日报告退发(订正、重做)一、实验目的学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。
二、实验内容1、学习使用全屏幕文本编辑软件EDIT。
用EDIT输入一段给定的源程序。
2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到EDIT进行修改。
3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE)4、在DOS提示符下运行该可执行文件。
[汇编语言程序的编写格式]汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。
任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。
段的定义有两种格式,分述如下:1,完整的段定义格式:一个段由段头,段体,段尾组成,形式如下:段名SEGMENT[定位类型][组合类型][‘类别’]……段名ENDS其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。
2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下:DOSSEG.MODEL 存储类型;“存储类型”可选择为SMALL。
.STACK[大小];堆栈段,“大小”指定堆栈的字节数。
.DATA;数据段。
.CODE[名字];代码段;一般只有一个代码段,名字可缺少……例1:用完整的段定义编写一源程序。
NAME EXAM1;可以省略DATA SEGMENT;定义数据段,以下是数据段的内容STR1 DB “HELLO,WELCOME!”,13,10,‘$’STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’STR3 DB “NICE!”,13,10,‘$’STR4 DB “SORRY!”,13,10,‘$’STR5 DB “UNKNOW,ANSWER AGAIN!(Y/N)”,DB 13,10,‘$’STR6 DB “SEE YOU NEXT TIME!”,13,10,‘$’DA TA ENDS ;数据段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE;DS:DATA;以下是代码段内容START:MOV AX,DA TA;给数据段寄存器赋值MOV DS,AXMOV AH,9;显示一字符串的功能号MOV DX,OFFSET STR1;显示字符串STR1的偏址INT 21H;DOS功能调用ASK :MOV DX,OFFFSET STR2;显示字符串STR2INT 21HMOV AH,1;键盘输入一字符的功能号INT 21H;键入的字符ASCⅡ码在ALNOT AL;求反TEST AL,‘Y’;是否按下‘Y’或‘y’键JE NEXT1TEST AL,‘y’JE NEXT1TEST AL,‘N’;是否按下‘N’键或‘y’键JE NEXT2TEST AL, ‘n’JE NEXT2MOV DX,OFFSET STR5;不是按上述键MOV AH,9INT 21HJMP ASK;再返回ASKNEXT1:MOV DX,OFFSET STR3;是按下‘Y’或‘y’键MOV AH,9INT 21HJMP BYENEXT2:MOV DX,OFFSET STR4;是按下‘N’或‘n’键MOV AH,9INT 21HBYE:MOV DX,OFFSET STR6INT 21HMOV DL,7;喇叭响的ASCⅡ码MOV AH,2INT 21HMOV AH,4CH;退回DOSINT 21HCODE ENDS;代码段结束END START;源程序结束注:源程序中的每一行注释语句前一定要加分号‘;’,下同。
微机原理与应用实验指导书
![微机原理与应用实验指导书](https://img.taocdn.com/s3/m/ecff97f0172ded630b1cb656.png)
目录第一篇汇编语言程序设计实验一汇编语言上机操作—比较字符串----------------------1-1 实验二循环程序设计—建立学生名次表---------------1-5 实验三显示器界面设计—光标轨迹程序----------------1-8 实验四键盘界面设计—键盘输入程序------------------1-10 实验五算术程序设计—判断闰年程序----------------1-22第二篇微机硬件实验系统实验一简单I/O口扩展实验-------------------2-1 实验二 8255并行口实验----------------------2-实验三 8253定时器/计数器接口实验-----------2-实验四 8250串口实验------------------------2-实验五存储器扩展实验-----------------------2- 实验六 8259中断控制器实验------------------2-实验七基于定时中断的实时控制综合实验-- ---2- 附录1 ASCII码表--------------------------3-1附录2 常用BIOS中断调用------------------3-2 附录3 INT 21H DOS系统功能调用------------3-5 附录4 PCI BIOS中断调用INT 1AH- -------3-11 附录5 汉字字符集表-----------------------3-13 附录6 DEBUG 主要命令------------- -------3-21第一篇汇编语言实验一汇编语言上机操作—比较字符串实验项目名称:比较字符串实验项目性质:普通所属课程名称:微机原理与应用实验计划学时:2一、实验目的1、学习程序设计的基本方法和技能;2、熟练掌握汇编语言设计、编写、调试和运行;二、实验内容和要求1、汇编语言上机操作方法编写程序,比较两个字符串STRING1和STRING2所含字符是否相同,若相同则在屏幕上显示‘MATCH’,否则显示‘NOT MATCH’。
微机原理实验报告
![微机原理实验报告](https://img.taocdn.com/s3/m/40ba7031580102020740be1e650e52ea5518cedc.png)
微机原理实验报告西安电⼦科技⼤学实验报告班级:1303018学号:130********姓名:李胜东地点: EII-312批次:第批时间: 2015.11-2015.12实验⼀汇编语⾔编程实现1.实验⽬的(1)掌握汇编语⾔的编程⽅法(2)掌握DOS功能调⽤的使⽤⽅法(3)掌握汇编语⾔程序的调试运⾏过程2.实验内容(1)将指定数据区的字符串数据以ASCII码形式显⽰在屏幕上,并通过DOS功能调⽤完成必要提⽰信息的显⽰。
(2)在屏幕上显⽰⾃⼰的学号姓名信息。
(3)循环从键盘读⼊字符并回显在屏幕上,然后显⽰出对应字符的ASCII码,直到输⼊”Q”或“q”时结束。
实验中使⽤的DOS功能调⽤: INT 21H3.实验步骤及原理(1)运⾏QTHPCI软件,根据实验内容编写程序,参考程序流程如下图所⽰。
(2)使⽤“项⽬”菜单中的“编译”或“编译连接”命令对实验程序进⾏编译、连接。
(3)“调试”菜单中的“进⾏调试”命令进⼊Debug调试,观察调试过程中数据传输指令执⾏后各寄存器及数据区的内容。
按F9连续运⾏。
(4)更改数据区的数据,考察程序的正确性。
4.实验源代码DATA SEGMENTNUMBER DB 'SNO:130********',0AH,'NAME:lishengdong',0DH,0AH,'$';0DH (回车))0AH(换⾏)24H($)结束MSG1 DB 0AH,0DH,'If you want to leave,please input: q or Q ',0AH,0DH,'$'MSG2 DB 0AH,0DH,0AH,0DH,'Input: $'RESULT DB 0AH,0DH,'ASCII is: $'SD DB ' 'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV SI,OFFSET DATAMOV CX,5A:MOV AL,DS:[SI]AND AL,0F0HCMP AL,0A0HJB A1ADD AL,07HA1:SHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HMOV AH,02HMOV DL,ALINT 21HMOV AL,DS:[SI]AND AL,0FHCMP AL,0AHJB A2ADD AL,07HA2:OR AL,30HMOV AH,02HMOV DL,ALINT 21HINC SILOOP AMOV AX,DATAMOV DS,AXMOV DX,OFFSET NUMBERMOV AH,09HINT 21HMOV DX,OFFSET MSG1 MOV AH,09H INT 21HC1: MOV DX,OFFSET MSG2 MOV AH,09H INT 21HMOV AH,01HINT 21HCMP AL,'Q'JZ EXITCMP AL,'q'JZ EXITMOV SD,ALMOV DX,OFFSET RESULTMOV AH,09HINT 21HMOV SI,OFFSET SDMOV AL,DS:[SI]AND AL,0F0HMOV CL,4SHR AL,CLCMP AL,0AHJB C2ADD AL,07HC2: ADD AL,30HMOV DL,ALMOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FHCMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,ALMOV AH,02HINT 21Hloop C1EXIT: MOV AX,4C00HINT 21HCODE ENDSEND START实验⼆数码转换实验1.实验⽬的(1)掌握不同进制数及编码相互转换的程序设计⽅法。
微机原理实验--汇编语言部分
![微机原理实验--汇编语言部分](https://img.taocdn.com/s3/m/84b2e8a4dd3383c4bb4cd2df.png)
实验一 汇编语言程序上机过程练习
1、实验目的:掌握汇编语言程序的上机过程 2、实验内容:利用文本编辑软件(如记事本、edit 等)输入汇编语言源程序,利用masm对源程序进 行汇编,利用link对目标文件进行连接,利用 debug对可执行文件进行调试 3、实验步骤: 3、实验总结:(上机时遇到的问题及解决办法的调 试情况,观察到的现象及其分析,对程序设计技巧 的总结以及程序输出结果的分析,实验的心得体会 等。 )
实验四
DOS系统功能调用
1、实验目的:掌握DOS系统功能调用的 编程方法。 2、实验内容: 试编写一个汇编语言程序,要求对键盘 输入的小写字母用大写字母显示出来。 3、实验步骤: 4、实验总结:
参考主程序段
…… MOV INT SUB MOV MOV INT …… AH,1 21H AL,20H DL,AL AH,2 21H
预备知识二: Debug常用命令
6、退出DEBUG命令Q(Quit),其格式为: Q 它退出DEBUG,返回DOS。
CMOS密码清除
一、硬件法
打开机箱,找到主板上的电池,取下电池,此时CMOS将因断电而失 去内部储存的一切信息。 进入纯DOS后(注意:不要在Win2000/NT/XP环境下进入,因为 这不是真正的DOS),在DOS提示符后输入DEBUG,回车后再输入如 下命令: -o 70 16 -o 71 16 -q 此时,已退出到DOS提示符。重新启动计算机,你就会发现原来的 CMOS密码已经被清除(命令中的16可以用其它值)。
预备知识一:常用dos命令
DIR--显示指定路径上所有文件或目录的信息
它的格式为"DIR [盘符:][路径][文件名] [参 数]“ 参数: /P:分页显示,当屏幕无法将信息完成显示时, 可使用其进行分页显示; /S:显示当前目录及其子目录下所有的文件,通 过这个参数,我们可以进行某个文件或目录的查 找,比如我们可以在"C:>"后输入"DIR *.DAT /S ↙ "来查找C盘中所有后缀名为DAT的文件。 几种参数可以同时使用,例如"DIR *.COM /W/P/S ↙ "。
微机原理实验指导书
![微机原理实验指导书](https://img.taocdn.com/s3/m/41f6b3d19f3143323968011ca300a6c30c22f1fe.png)
微机原理实验指导书实验一数据传送实验目的 :1. 熟悉 8086 指令系统的数据传送指令及 8086 的寻址方式。
2. 利用 Turbo Debugger 调试工具来调试汇编语言程序。
实验任务 :1.通过下述程序段的输入和执行来熟悉Turbo Debugger 的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:MOV BL , 08HMOV CL , BLMOV AX , 03FFHMOV BX , AXMOV DS : [0020H] , BX2.用以下程序段将一组数据压入( PUSH )堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:MOV AX , 0102HMOV BX , 0304HMOV CX , 0506HMOV DX , 0708HPUSH AXPUSH BXPUSH CXPUSH DX出栈程序段请自行编写(用不同的出栈顺序)。
.3. 指出下列指令的错误并加以改正,上机验证之。
(1) MOV [BX] , [SI](2) MOV AH , BX(3) MOV AX , [SI][DI](4) MOV BYTE PTR[BX] , 2000H(5) MOV CS , AX(6) MOV DS , 2000H4. 设置各寄存器及存储单元的内容如下:(BX) = 0010H , (SI) = 0001H(10010H) = 12H , (10011H) = 34H , (10012H) = 56H ,(10013H) =78H (10120H) =0ABH ,(10121H) =0CDH ,(10122H) = 0EFH说明下列各条指令执行完后 AX 寄存器中的内容,并上机验证。
(1) MOV AX , 1200H(2) MOV AX , BX(3) MOV AX , [0120H](4) MOV AX , [BX](5) MOV AX , 0110H[BX](6) MOV AX , [BX][SI](7) MOV AX , 0110H[BX][SI]5. 将 DS : 1000H 字节存储单元中的内容送到 DS : 2020H 单元中存放。
微机原理程序设计实验
![微机原理程序设计实验](https://img.taocdn.com/s3/m/aa30a58983d049649b665828.png)
微机原理汇编语言上机实验注意:红色斜体部分是对该处的说明或提示,应该按具体内容书写即可实验一顺序程序设计实验目的:熟悉汇编语言程序设计软件masm的使用,掌握顺序程序的编写和运行方法。
实验内容:编写顺序结构的汇编语言程序,并进行编译、链接生成可执行程序,进行调用。
源程序代码如下:(见课本P143页,例4.5的代码,注意变量x、y、z在定义时初值设为6、7、8)…程序的编译、链接和运行:(根据文件《汇编程序调试方法》自己总结书写,把编译、链接和运行的命令写清楚即可,如编辑命令是:EDIT 4-5.asm编译命令是:MASM 4-5.asm链接命令是:LINK 4-5.obj运行命令是:4-5.exe)实验二分支程序设计实验目的:熟悉汇编语言程序设计软件masm的使用,掌握分支程序的编写、运行和调试方法。
实验内容:编写分支结构的汇编语言程序,能对程序进行编译、链接和调用,并能对程序进行调试。
源程序代码如下:(见课本P146页,例4.7的代码)…程序的编译、链接和运行:(根据文件《汇编程序调试方法》自己总结书写,把编译、链接和运行的命令写出来,并写出程序调试的方法和调试命令的用法)编译、链接和运行命令如上个实验所示,调试命令为DEBUG 4-7.exe-R——查看寄存器-U——反汇编-P——分步执行程序-D——查看数据段内容最好能写出具体用法实验三循环程序设计实验目的:熟悉汇编语言程序设计软件masm的使用,掌握循环程序的编写、运行和调试方法。
实验内容:编写循环结构的汇编语言程序,能对程序进行编译、链接和调用,并能对程序进行调试。
源程序代码如下:(见课本P149页,例4.9的代码)…程序的编译、链接和运行:(根据文件《汇编程序调试方法》自己总结书写,把编译、链接和运行的命令写出来,并写出程序调试的方法和调试命令的用法)编译、链接和运行命令如上个实验所示,调试命令为DEBUG 4-9.exe-R——查看寄存器-U——反汇编-P——分步执行程序-D——查看数据段内容最好能写出具体用法。
微机原理与应用实验报告-汇编语言程序设计
![微机原理与应用实验报告-汇编语言程序设计](https://img.taocdn.com/s3/m/79b64f900740be1e640e9a4c.png)
实验报告册课程名称:微机原理指导老师:班级:姓名:学号:学期:20 19 —20 20 学年第学期实验目录实验一:汇编语言程序设计实验二:实验三:实验四:实验五:实验六:姓名:成绩:实验一汇编语言程序设计一、实验目的1、学习8088汇编语言程序的基本结构和程序设计的基本方法。
2、熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的全过程。
3、掌握DEBUG基本指令及其使用方法。
二、实验内容编写程序,将80H-8FH共16个字节数据写入数据段1000H偏移地址开始的16个内存单元中。
三、实验步骤1、进入编程环境,编写、汇编、链接、运行汇编语言源程序。
2、利用DEBUG指令,对程序进行调试。
四、实验程序实验代码如下:;将80H-8FH共16个字节数据写入数据段1000H偏移地址开始的16个内存单元中。
DATAS SEGMENTDATA DB80H,81H,82H,83H,84H,85H,86H,87H,88H,89H,8AH,8BH,8CH,8DH,8EH,8FH;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV ES,AXMOV SI,OFFSET DATAMOV DI,1000HMOV CX,16CLDREP MOVSB;此处输入代码段代码HLTMOV AH,4CHINT 21HCODES ENDSEND START五、实验结果将80H-8FH送入1000H-1016H内存段的结果:3.实验小结进一步巩固了数据的一般传送以及体会到了数据块传送的便利之处,进一熟悉了MASM软件的操作和DEBUG命令的使用。
微机原理与汇编语言程序设计实验指导书
![微机原理与汇编语言程序设计实验指导书](https://img.taocdn.com/s3/m/fcccb727dd36a32d7375817c.png)
《微机原理与汇编语言程序设计》实验指导书上海工程技术大学电子电气工程学院目录实验一80x86汇编编程环境和工具实验 (1)实验二80x86指令系统实验 (4)实验三80x86汇编编程方法和技巧实验 (7)实验一 80x86汇编编程环境和工具实验一、实验目的1 、掌握汇编语言开发环境和DEBUG的基本命令2 、掌握Intel 80X86的寻址方式二、实验环境1 、硬件:Intel 80X862 、软件:DEBUG三、实验内容1 、查看内存中的数据使用Debug的D命令查看微型计算机主板ROM中写有生产日期,在内存FFF00H-FFFFFH 的某几个单元中,找到这个生产日期并试图改变它,记录操作过程和结果;2 、修改内存中的数据使用Debug的E命令向内存B8100H开始的单元依次写入以下数据,观察产生的结果并记录操作过程和结果:B8100H-B8107H:41 01 42 02 43 03 44 043 、查看内存中的指令使用Debug的U命令查看8086上电复位后执行的第一条指令的内容,8086上电复位后执行的第一条指令地址为FFFF0H,试用Debug的A命令改变存储器地址FFFF0H上的指令,记录操作过程和结果,观察是否能改变8086上电复位后执行的第一条指令;4 、使用Debug工具将以下数据和指令写入内存并观察运行结果编程提示:在DEBUG与汇编源程序中输入数据和指令的不同1 、进制在汇编源程序中数据的默认进制是十进制,如果要指令中出现十六进制数据,必须在它的后面加上十六进制后缀H,如果这个十六进制数据还是以字母开头,必须在它的前面加0,例如MOV AL,0AH(如果不加0,这条指令就变成MOV AL,AH);而在DEBUG中所有数据只能以十六进制显示和输入。
2 、存储器操作数的段前缀(即段地址)在汇编源程序中,通常使用段前缀为指令中出现的存储器操作数显示标明所在段,例如MOV AX,DS:[0000]或MOV AX,ES:[0000];而使用DEBUG输入指令时,不能在指令中显式标明存储器操作数的段前缀而使用默认段前缀,例如MOV AX,[0000]和MOV AX,[BX]中操作数的默认段前缀都是DS。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验报告
班级:XXXXX
姓名:XXXX
学号:20XXXX
XXXXX大学
信息科学与技术学院
信息工程系
实验二汇编语言程序设计
一、实验目的:
1、熟悉MASM编译环境,了解程序的汇编方法;
2、熟悉常用汇编指令,学习汇编程序设计方法;
3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式。
二、实验内容:
1、将16进制数转换成ASCII码
2、求解:将程序数据段中0,1,2,...0Ah,0Bh,0Ch,0Dh,0Eh,0Fh的16个16进制数转换为对应的ASCII码,并存储在原码所在的相应地址中。
3、解答:取一个数,首先要判断该数是否大于等于10,若大于10则加上37H 转化为对应的ASCII码;若小于10则加上30H。
三、程序流程图和程序代码
1、流程图
2、代码与注释
data segment
buf db 0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh data ends
code segment
assume cs:code,ds:data;设置代码段cs,数据段ds start:mov ax,data;将数据存到ax中
mov ds,ax;转存到ds中
mov cx,16;将16赋给cx
lea si,buf;把buf的偏移地址赋给si
L2:mov al,[si]; 将si中数据移到al
cmp al,10; 将al中数据与10相比
jae L1;将16赋给cx
sub al,7h;如果大于10加7H
L1:add al,37h;反之加37
mov [si],al;把al转存到si
inc si;si si自加
loop L2;L2循环
mov ah,4ch
int 21h;回到dos系统
code ends
end start
四、调试过程及遇到的问题
1、程序执行截图
2、调试用到的命令
mount命令、link、masm、debug -u -t -d -g -q
3、遇到的问题及解决办法
一开始不知道怎么进行程序调试,在老师讲解了 -u -t -d -g命令的用法之后,对 -u -t -d -g用法有了认识,而后就解决问题.
五、思考题
1、总结无符号条件转移指令的功能,要求更改程序,用JA指令实现相同功能。
data segment
buf db 0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,16
lea si,buf
L2:mov al,[si]e
cmp al,9
ja L1
sub al,7h
L1:add al,37h
mov [si],al
inc si
loop L2
mov ah,4ch
int 21h
code ends
end start
2、总结CMP指令和test指令的用法和区别。
cmp与sub类似,即从目的操作数减去源操作数,但sub会将运算结果送至目的操作数,而cmp不会送至目的操作数;test则与and类似,即将两个操作数进行按位“与”运算,但and将运算结果送至目的操作数,而test则不会。
cmp主要用于比较两数的关系,可以在有符号数和无符号数之间进行比较。
两数相等影响ZF标志,无符号数影响CF标志,有符号数影响SF和OF标志。
一般根据标志位的影响设置程序跳转,即根据不同的条件完成对应的程序片段,类似于高级语言的IF-ELSE结构。
所有的有条件转移指令都可以用在这条指令之后。
3、总结有符号数转移指令JG,JL功能,叙述该指令是如何使用标志位判断有符号数的大小的?
JE/JZ != 不跳转
JNZ/JNE == 不跳转
JG/JNLE <= 不跳转
JGE/JNL < 不跳转
JL/JNGE >= 不跳转
JLE/JNG > 不跳转
六、心得体会
这次试验主要是对一些基本的汇编实验有一些了解,对汇编代码用法有一些了解。
在试验之后,确实是了解了一些代码的用法,也了解了dos系统一些命令的用法,比如-u,-d,-g,-t -q等等,这次试验还是很有收获的。