微机原理-实验二-汇编程序1

合集下载

微机原理及汇编语言程序设计实验指导书

微机原理及汇编语言程序设计实验指导书

微机原理及汇编语言程序设计实验指导书计算机实验中心目录实验一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命令检查键入的程序,特别注意左边的机器码。

微机原理及应用实验报告

微机原理及应用实验报告
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

微机原理与汇编语言_实验2_分支程序设计

微机原理与汇编语言_实验2_分支程序设计

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

实验一汇编语言的编译、链接和调试一、实验目的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.了解将十六进制数转换成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个字节存储块各单元内数据对应相同。

微机原理实验汇编程序上机过程

微机原理实验汇编程序上机过程

第一节汇编程序的开发过程本节主要介绍了汇编语言源程序的编辑、汇编、连接的方法,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]:以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。

《微机原理及汇编语言》实验指导书

《微机原理及汇编语言》实验指导书

《微机原理及汇编语言》实验指导书微机原理和汇编语言实验指导书信息与通信工程学院电气工程系目录实验须知 (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——全速执行程序命令。

微机原理实验教程

微机原理实验教程

实验一汇编程序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宏汇编程序被调入以后,先显示版本号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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等等,这次试验还是很有收获的。

相关文档
最新文档