指令系统和汇编语言程序的设计实验
MCS-51单片机指令系统与汇编语言程序设计
指令系统:一台计算机所能识别、执行的指令的集合就是它的指令系统。 机器语言:指令系统是一套控制计算机执行操作的二进制编码,称为机器语言。机器语言指令是计算机惟一能识别和执行的指令。 汇编语言:指令系统是利用指令助记符来描述的,称为汇编语言。 计算机的指令系统一般都是利用汇编语言描述的,是由计算机硬件设计所决定的。指令系统没有通用性。 单片机一般是空机,未含任何系统软件。因此在第一次使用前,必须对其进行编程,
(4)定义字节伪指令DB 格式:[标号:] DB x1, x2,…, xn 功能:将8位数据(或8位数据组)x1, x2,…, xn顺序存放在从当前程序存储器地址开始的存储单元中。xi可以是8位数据、ASCII码、表达式,也可以是括在单引号内的字符串。两个数据之间用逗号“,”分隔。 xi为数值常数时,取值范围为00H~FFH。xi为ASCII码时,要使用单引号‘’,以示区别。xi为字符串常数时,其长度不应超过80个字符。 (5)定义双字节伪指令DW 格式:[标号:] DW x1, x2,…, xn 功能:将双字节数据[或双字节数据组]顺序存放在从标号指定地址单元开始的存储单元中。其中,xi为16位数值常数,占两个存储单元,先存高8位(存入低位地址单元中),后存低8位(存入高位地址单元中)。
ห้องสมุดไป่ตู้
2.1.3 指令中的常用符号
Rn(n=0~7):表示当前工作寄存器R0~R7中的任一个寄存器。 Ri(i=0或1):表示通用寄存器组中用于间接寻址的两个寄存器R0, R1。 #data:表示8位直接参与操作的立即数。 #data16:表示16位直接参与操作的立即数。 direct:表示片内RAM的8位单元地址。 addr11:表示11位目的地址,主要用于ACALL和AJMP指令中。 addr16:表示16位目的地址,主要用于LCALL和LJMP指令中。 rel:用补码形式表示的8位二进制地址偏移量,取值范围为128~+127,主要用于相对转移指令,以形成转移的目的地址。 DPTR:数据指针,用于寄存器间接寻址方式和变址寻址方式。
汇编语言实验报告
汇编语⾔实验报告
福建农林⼤学⾦⼭学院
(程序设计类课程)
实验报告
课程名称:汇编语⾔
姓名:
系:
专业:
年级:
学号:
指导教师:
职称:
2010~2011学年第⼆学期
实验项⽬列表
福建农林⼤学⾦⼭学院实验报告
系:专业:年级:
姓名:学号:实验课程:汇编语⾔
实验室号:_ _1#605 实验设备号: I3 实验时间: 2011.4.25 指导教师签字:成绩:实验⼀汇编程序的汇编及运⾏
1.实验⽬的和要求
(1)熟悉汇编程序的汇编、连接、执⾏过程;
(2)⽣成LST⽂件,查看LST⽂件;
(3)⽣成OBJ⽂件,修改语法错误;
(4)⽣成EXE⽂件;
(5)执⾏程序。
2.实验环境
IBM—PC机及其兼容机;
实验的软件环境是:
操作系统:DOS 2.0以上;调试程序:/doc/aa5b4424a5e9856a56126062.html ;⽂本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;
交叉引⽤程序:CREF.EXE(可有可⽆)。
3.实验内容及实验数据记录
(1)将数据段输⼊,取名1.txt,保存在MASM⽂件夹下。⽣成LST⽂件,(不
必连接、运⾏)⽤EDIT查看1.LST⽂件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?
DATA SEGMENT
ORG 20H
NUM1=8
NUM2=NUM1+10H
DA1 DB ‘IBM PC’
DA2 DB 0AH, 0DH
COUNT EQU $-DA1
DATA ENDS
END
(2)输⼊有错误的⽂件,修改错误语句。(MASM没有出现错误即可。不必连接、运⾏。)
第5章 指令与指令系统和汇编语言程序设计(2)
低 8 位有多种用法:给出 1 或 2 个寄存器的编号,
或 输入/输出的端口地址,
或 相对转移指令的 8 位的偏移量。
双字指令的第二个字的内容可能是:立即数、直接地址、变址偏移量。
TEC-2000 16位机基本指令系统
指令格式
汇编语句
00000000 DR SR 00000001 DR SR 00000010 DR SR 00000011 DR SR 00000100 DR SR 00000101 DR SR 00000110 DR SR 00000111 DRSR 00001000 DR0000 00001001 DR0000 00001010 DR0000 00001011 DR0000 01000001 OFFSET 01000100 OFFSET 01000101 OFFSET 01000110 OFFSET 01000111 OFFSET
DATA(16位) 10001100 00000000 10001111 00000000
11001110 00000000
汇编语句 JMPA ADR
操作数 个数
1
CZ 指令 VS 类型
功能说明
····
无条件跳到ADR
LDRR DR,[SR]
2 ····
DR←[SR]
IN I/O PORT
1 ····
ADD DR,SR SUB DR,SR AND DR,SR CMP DR,SR XOR DR,SR TEST DR,SR OR DR,SR MVRR DR,SR
指令系统与汇编语言程序设计
POP A
精选ppt
片 内 R A M 3 4 H ××× 3 3 H ××× SSPP→→ 3 2 H 55×66HH SP→ 3 1 H 0×022H SSPP→→ 3 0 H ×
0×20H
A
《单片机原理及应用》教学课件
(五) 查表指令 实现从程序存储器读取数据到A累加器,只能使用变址间接 寻址方式。 多用于查常数表程序,可直接求取常数表中的函数值。
1010011i n
85 n1 n2
MOV DPTR,#d1d2 ;DPTR←d1d2
90 d1 d2
习题1:找出配对指令,实精现选p反pt 向传送。
《单片机原理及应用》教学课件
例2-4-1:顺序执行下列指令序列,求每一步执行结果。
MOV A,#30H
;A= 30H
MOV 4FH,A
;(4FH)= 30H
精选ppt
《单片机原理及应用》教学课件
例:查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H单元中,要 求将查表求Y,存入片内RAM21H单元。
2)指令地址
1000H 1002H 1004H 1005H 1007H 1008H 100BH
源程序
ORG 1000H
;程序起始地址
SQU: MOV A,20H ;取X
2. 半字节交换指令
XCHD A,@Ri ;A0~3 «(Ri)0~3
8086汇编语言程序设计 微机实验报告
微机实验报告
第一部分:8086汇编语言程序设计
一、实验目的
通过上机练习,初步掌握8086的指令系统,熟悉8086汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用DEBUG调试工具。
二、实验题目
(一)编程实现从字符串中查找特定的字符,记录特定字符的个数,并将结果在屏幕上显示,同时退出并返回DOS。(要求字符串从键盘上输入)
1、流程图
2、实验程序及注释
DATA SEGMENT
BUFSIZE DB 20 ;数据段
ACTCHAR DB ? ;定义字符串
CHARTEXT DB 20 DUP(?) ;给输入字符分配内存
DB '$'
CNT DB 0 ;给计数器分配内存
STRING1 DB 'PLEASE INPUT THE STRING:','$'
STRING2 DB 0AH,0DH,'INPUT THE WORD YOU WANT TO CHECK:','$' STRING3 DB 0AH,0DH,'THE NUMBER OF THE WORD IS:','$'
DATA ENDS ;数据段结束
COSEG SEGMENT ;代码段
ASSUME CS:COSEG,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET STRING1 ;显示提示语:请输入字符串
MOV AH,09H ;输出字符串STRING1
INT 21H
MOV DX,OFFSET BUFSIZE ;从键盘输入字符串存入BUFSIZE
MOV AH,0AH ;并送显
INT 21H
计算机组成原理实验1-汇编语言实验
微处理器与接口技术
实验指导
实验一监控程序与汇编语言程序设计实验
一、实验要求
1、实验之前认真预习,明确实验的目的和具体实验内容,设计好主要的待实验的程序,做好实验之前的必要准备。
2、想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果。
3、在教学实验过程中,要爱护教学实验设备,认真记录和仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。
4、实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。
二、实验目的
【1】学习和了解TEC-XP16教学实验系统监控命令的用法;
【2】学习和了解TEC-XP16教学实验系统的指令系统;
【3】学习简单的TEC-XP16教学实验系统汇编程序设计。
三、实验注意事项
(一)实验箱检查
【1】连接电源线和通讯线前TEC-XP16实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP16实验系统上的芯片和PC机的串口造成损害。
【2】五位控制开关的功能示意图如下:
【3】几种常用的工作方式【开关拨到上方表示为1,拨到下方为0】
(二)软件操作注意事项
【1】用户在选择串口时,选定的是PC机的串口1或串口2,而不是TEC-XP16实验系统上的串口。即选定的是用户实验时通讯线接的PC机的端口;
【2】如果在运行到第五步时没有出现应该出现的界面,用户需要检查是不是打开了两个软件界面,若是,关掉其中一个再试;
汇编语言程序设计实验指导
汇编语言程序设计实验指导
【实验提要】以下列举的10个实验,都是以Intel的8086及后续系列微处理器的指令系统为核心,采用宏汇编工具MASM6. X以及调试工具DEBUG或DEBUG32,针对本教材所述内容进行相关的上机实践。旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。(带*号的为选作内容)
实验一调试工具DEBUG的应用
实验目的
通过实验掌握下列知识:
1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG的功能;
2、DEBUG命令: A,D,E,F,H,R,T,U的使用;
3、BCD码、ASCII码及用十六进制数表示二进制码的方法;
4、寄存器: AX,BX,CX,DX,FLAGS,IP。
内容及步骤
注:本次实验可以参照教材上关于DEBUG的叙述内容进行。
一、DEBUG 命令使用
1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境,
显示提示符 '- '。
2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。
注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。
3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。
4、用命令 F230 23F 12 重复上二项实验,观察结果并比较。
5、用命令 E200 41 42 43 44 45将A-E的ASCII码写入地址为200开始的内存单元中,再
单片机汇编语言程序设计实验报告
单片机实验1 汇编语言程序设计实验
---- 存储器块赋值
一.实验目的
1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二.实验内容
指定存储器中某块的起始地址和长度,要求将其内容赋值。例如将4000H 开始的100个字节内容清零或全部赋值为33H(参考程序),
要求根据参考程序修改:
修改程序,赋值内容为(10,9,8,7,6,5,4,3,2,1。)
三.实验仪器
微机、VW,WAVE6000编程环境软件,(单片机实验箱)
仿真器--仿真器设置-
选择仿真器选择仿真头选择CPU Lab8000/Lab6000通用微控制器 MCS51实验 8051
前3个软件实验勾选√使用伟福软件模拟器
四实验步骤
注意:
1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容
3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR
4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
编译器默认设置:
程序框图
参考例程序:
Block equ 4000h
mov dptr, #Block ; 起始地址
mov r0, #10 ; 清10个字节
mov a, #33h ; 将33H赋值给a
监控程序与汇编语言程序设计实验介绍免费全文阅读
教学实验系统的指令系统
• C组: 在取指之后可三步完成 , 其中CALR指令在用两步完成 一 次写内存之后 , 第三步执行寄存器之间的数据传送; 而其
它 指令在第一步置地址寄存器AR , 第二步读内存并传送到地址
寄 存器AR , 第三步执行另外一 次读 、 写内存的操作 。 扩展指令 CALR 、LDRA 、STRA 、LDRX 、STRX
• 注意 , 教学机不保存用A命令输入的汇编语句的源码 , 内存中保留 的是经过汇编后得到的机器码指令 , 在需要检查输入的汇编语言 程序时 , 就需要通过U命令对保存在内存中的指令码程序进行反汇 编 , 重新得到汇编语言程序并显示在显示器屏幕上 。
• 在一项操作过程中 , 第一 次运行的U命令需要给出地址参数 , 接下 来的操作 , 只需要给出U命令名即可 , 不必给出地址参数 , 以保证 连续的命令之间正确的衔接关系 。
TEC-XP实验系统
由3个功能子系统组成: 1. 利用中小规模电路设计实现的16位字长的教学计算机系统; 2. 用中小规模电路设计实现的8位字长的教学计算机系统;
3. 用FPGA门阵列器件设计实现的单芯片CPU组成的教学计算机系统 。
实验系统组成框图
教学计算机的硬件组成框图
教学计算机的硬件组成线路
MVRD DR ,DATA ; DR ←DATA
IN I/O PORT ; R0 ← [I/O PORT],从外设I/0 PORT端口读入数据到R0
《汇编语言程序设计 —基于ARM体系结构 (第4版)》教学课件—03ARM指令系统
图3-1程序设计语言的层次结构
为了提高程序设计的效率,人们提出了汇编语言的概念。将机器码用指令助记符表示,这样就比机器语言方便得多。不过,在使用汇编语言后,虽然编程的效率和程序的可读性都有所提高,但汇编语言同机器语言非常接近,它的书写风格在很大程度上取决于特定计算机的机器指令,所以它仍然是一种面向机器的语言。 为了更好地进行程序设计,提高程序设计的效率,人们又提出了高级语言程序设计的概念。如C、JAVA等,这类高级语言对问题的描述十分接近人们的习惯,并且还具有较强的通用性。这就给程序员带来极大的方便。当然这类高级语言在执行前必须转换为汇编语言或其它中间语言,最终转换为机器语言。通常有两种方法实现这个转换:编译或解释。
ARM 指令在时序上是 S、N、I 和 C 周期的混合。各种类型的周期都必须至少与 ARM 的时钟周期一样长。对于典型的 SRAM 系统,所有类型的周期是最小长度,内存系统也可以伸展它们,如典型的 DRAM 系统伸展如下: N 周期伸展为最小长度的两倍:这是因为 DRAM 在内存访问是非顺序时要求更长的时间。S 周期通常是最小长度,但有时也会被伸展成 N 周期的长度,如从一个内存“行”的最后一个字移动到下一行的第一个字的时候。 I 周期和 C 周期总是最小长度。
分析:执行第1条指令对于标志寄存器的值没有任何影响,因此CPSR的值不 变。执行第2条指令后CPSR=NzcvqIFt_SVC,因为R0的值减去R3值,结果变成了一个负数,故而N被置位了。
汇编语言程序设计实验篇
1.汇编语言程序设计实验篇
1.1.汇编系统软件简介
Emu8086-Microprocessor Emulator是集源代码、汇编/反汇编工具以及debug的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。
1.1.1创建程序
TEMPLATE程序
本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。
在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。
在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。
输入全部指令后,单击按钮,保存相应的程序段。
2.EXE TEMPLATE程序
本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。
在“choose code template”对话框中,选择“EXE template-advanced executable : relocation, checksum.”后,单击按钮。
计组实验报告
计算机组成原理实验报告
课程名称计算机组成原理
学院计算机学院
专业班级
学号
学生
指导教师
2016 年 6 月 8 日
实验一、根底汇编语言程序设计
一、实验目的:
1、学习和了解TEC-XP+教学实验系统监控命令的用法;
2、学习和了解TEC-XP+教学实验系统的指令系统;
3、学习和了解TEC-XP+教学实验系统汇编程序设计。
......
二、实验设备与器材:
TEC-XP+教学实验系统和仿真终端软件PCEC;
PC机
三、实验容:
1.学习联机使用TEC-XP+教学实验系统和仿真终端软件PCEC;
2.学习使用WINDOWS界面的串口通讯软件。
3.使用监控程序的R命令显示/修改存放器容、D命令显示存储器容、E命令修改存储器容;
4.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况;
四、实验步骤:
1、准备一台串口工作良好的PC机;
2、将TEC-XP放在实验台上,翻开实验箱的盖子,确定电源处于断开状态;
3、将黑色电源线一端接220V交流电源,另一端插在TEC--XP试验箱电源插座上;
4、取出通讯线,将通信线的9芯插头接在试验箱的串口“COM1〞或“COM2〞上,另一端接到PC机的串口上;
5、将TEC-XP实验系统左下方的6个黑色控制器开关置为001100,,控制开关的功能在开关上、下方有标识;开关拨向上方表示“1〞,拨向下方表示“0〞,“x〞表示任意,其他实验一样;
6、翻开电源,船形开关和5v电源指示灯亮。
7、在PC机上运行PCEC16.EXE文件,直接回车。
汇编语言程序设计实验报告
汇编语言程序设计实验报告
汇编语言程序设计实验报告
引言
汇编语言是一种低级语言,用于编写计算机的底层程序。在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。
实验目的
本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。
实验环境
在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。
实验内容
1. 汇编语言基础知识
在实验开始前,我先学习了汇编语言的基础知识。汇编语言使用助记符来代表机器指令,与机器指令一一对应。了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。
2. 汇编语言程序设计
在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。
3. 汇编语言程序调试
在编写汇编语言程序时,我遇到了一些错误和问题。为了解决这些问题,我学会了使用调试工具来定位错误。通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。
4. 汇编语言程序优化
在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。实验心得
通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。
指令系统和汇编语言程序设计实验报告
指令系统和汇编语⾔程序设计实验报告
指令系统和汇编语⾔程序设计实验报告
姓名:XXX
班级:XXXXXXX
学号:000000
3.2 指令系统实验
实验⼀熟悉键盘操作及数传指令编程设计
⼀、实验⽬的
1.熟悉软件模拟调试的环境及键盘操作。
2.掌握汇编语⾔程序设计的⽅法,加深对指令的理解。
3.学会软件模拟调试和察看修改观察项的⽅法。
⼆、实验内容
印证数据传送指令的功能、寻址⽅式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问⽅式。
三、实验步骤
1.进⼊调试软件环境,输⼊源程序;
2.汇编源程序;
3.⽤单步⽅式运⾏程序;
4.检查并记录各寄存器和存储单元内容的变化。
四、程序清单及实验结果
1.内部RAM数据传送
1)寄存器寻址与⽴即寻址,需要查看的数据有A、PSW和不同寄存器区的Rn等单元
的内容。
ORG 0000H
MOV PSW,#00H
MOV R0,#30H
MOV A,R0
MOV R6,A
MOV PSW,#14H
MOV R0,#30H
MOV A,R0
MOV R6,A
MOV PSW,#10H
MOV R6,A
MOV PSW,#08H
MOV R0,#30H
MOV A,R0
MOV R6,A
SJMP $
数据记录:
2) 直接寻址,需查看30H、31H、32H、40H、ACC、PSW等单元的内容。 ORG 0100H MOV 30H,#45H
MOV 31H,#46H
MOV 02H,31H
MOV 0E0H,30H
MOV 32H,ACC
MOV ACC,PSW
MOV 40H,ACC
汇编语言程序设计的实验环境及上机步骤
汇编语言程序设计的实验环境及上机步骤
一、实验环境
汇编语言程序设计的实验环境如下:
1.硬件环境
微型计算机(Intel x86系列CPU)一台
2.软件环境
⏹Windows98/2000/XP操作系统
⏹任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等)
⏹汇编程序(MASM.EXE或TASM.EXE)
⏹连接程序(LINK.EXE或TLINK.EXE)
⏹调试程序(DEBUG.EXE或TD.EXE)
文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用TD.EXE。
二、上机实验步骤
注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE)。
1.确定源程序的存放目录
建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。如果没有创建过此目录,请用如下方法创建:
通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。
2.建立ASM源程序
建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。
汇编语言实验报告
实验一汇编程序的汇编及运行
1.实验目的和要求
1、熟悉汇编程序的汇编、连接、执行过程
2、生成LST文件,查看LST文件
3、生成OBJ文件,修改语法错误
4、生成EXE文件
5、执行
2.实验环境
IBM—PC机及其兼容机
实验的软件环境是:
操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录
1、将数据段输入,取名1.txt,保存在MASM文件夹下。生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?
DATA SEGMENT
ORG 20H
NUM1=8
NUM2=NUM1+10H
DA1 DB ‘IBM PC’
DA2 DB 0AH, 0DH
COUNT EQU $-DA1
DATA ENDS
END
2、输入有错误的文件,修改错误语句。(MASM没有出现错误即可。不必连
接、运行。)
DATA SEGMENT
VAR1 DB 0, 25, ODH, 300
VAR2 DB 12H, A4H, 6BH
VAR3 DB ’ABCDEF’
VAR4 DW 1234H, 5678H
VAR5 DW 10H DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DE: DATA BEING MOV AX, DATA
MOV DS, AX
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章指令系统和汇编语言程序设计实验
本章实验主要包括指令系统和汇编语言程序设计两部分。采用软件模拟调试的方法, 目的在于通过这些实验可以使学生巩固所学知识, 加深对 MCS-51单片机部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。
第一节指令系统实验
实验一熟悉键盘操作及数传指令编程设计
一、实验目的
1.熟悉软件模拟调试的环境及键盘操作。
2.掌握汇编语言程序设计的方法,加深对指令的理解。
3.学会软件模拟调试和察看修改观察项的方法。
二、实验容
印证数据传送指令的功能、寻址方式以及 PC 指针、 SP 指针、 DPTR 指针、Ri 指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。
三、实验步骤
1.进入调试软件环境,输入源程序;
2.汇编源程序;
3.用单步方式运行程序;
4.检查并记录各寄存器和存储单元容的变化。
四、程序清单
1. 部 RAM 数据传送
需要查看的数据有 30H,31H,A,R0等。
ORG 0000H
MOV R0,#30H
MOV 30H,#45H
MOV 31H,#46H
MOV R2,30H
MOV 02H,31H
MOV A,#87H
MOV 0E0H,30H
MOV 30H,A
MOV 31H,R0
SJMP $
END
2. 外部数据传送
需要查看的数据有外部数据存储器单元 2000H ,外部程序存储器单元2001H 。 ORG 0000H
MOV A,#89H
MOV DPTR,#2000H
MOVX DPTR,A
INC DPTR
CLR A
MOVC A,A+DPTR
SJMP $
ORG 2000H
DB 44H
DB 78H
DB 67H
END
3. 堆栈操作
需要查看的数据有 50H 、 51H 、 A 及 SP 指针和堆栈区中数据随 PUSH 和POP 指令执行后的变化情况和数据的存放次序等。
1 可用于保护现场和恢复现场的程序
ORG 0000H
MOV SP,#5FH
MOV 50H,#3BH
MOV 51H,#2FH
MOV A,#12H
PUSH 50H
PUSH 51H
PUSH ACC
POP 0E0H
POP 51H
POP 50H
SJMP $
END
2可用于数据交换的程序ORG 0100H
MOV SP,#6FH
MOV 50H,#3BH
MOV 51H,#2FH
PUSH 50H
PUSH 51H
POP 50H
POP 51H
SJMP $
END
4. 数据交换
记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。 ORG 0000H
MOV A,#58H
SWAP A
MOV 40H,A
MOV A,#30H
MOV R0,#30H
MOV R0,#09H
XCHD A,R0
MOV 50H,#1
MOV A,#89H
XCH A,50H
MOV R7,#3
XCH A,R7
XCH A,R0
SJMP $
END
五、思考题
1.寄存器寻址与寄存器间接寻址有什么区别?
2. PC 指针与 SP 指针有什么区别?
3. DPTR 指针与 Ri (R0, R1指针有什么区别?
4.立即寻址与直接寻址有什么区别?
4. 同一个特殊功能寄存器不同表达形式。
实验二数传指令和算数运算指令编程设计
一、实验目的
1.掌握数据块的传送操作和算术运算指令的应用。
2.进一步掌握汇编语言设计和调试方法。
3.掌握观察窗口的使用方法。
4.学会给存储单元赋初值的方法。
二、实验容
1. 数据区传送
(1把部 RAM 40H~4FH 置初值 0A0H ~0AFH ;
(2而后把 40H ~4FH 容传送到外部 RAM 9800H~980FH 中; (3再把 9800~980FH 容传送到 50H~5FH 中。
2.多字节十进制加法
加数放在 30H 开始的单元中(最低位放在 30H ,按从小到大的顺序存放 ,被加数和结果存放在 20H 开始的单元(最低位在 20H 中 ,字节数放在 2FH 中,最高进位位放在 7FH 中的最低位。
三、实验步骤
1.分别用单步和连续运行方式,调试上述两个程序;
2.在执行第二个程序之前,给被加数和加数单元赋初值;
3.在观察窗口中观察结果。
四、实验程序清单
1. 数据块传送程序:
ORG 0000H
MAIN: MOV R0, #40H
MOV R2, #10H
MOV A, #0A0H
A1: MOV R0, A
INC R0
INC A
DJNZ R2, A1
MOV R0, #40H
MOV DPTR, #9800H