文档库 最新最全的文档下载
当前位置:文档库 › 汇编上机实验五 条件转移指令

汇编上机实验五 条件转移指令

汇编上机实验五 条件转移指令
汇编上机实验五 条件转移指令

汇编上机实验五条件转移指令

实验目的:

通过实验掌握下列知识:

1、8088指令:JZ,JNZ,JC,JNC,CMP,SHR。

2、程序:用字符搜索法确定字符串长度。

3、程序:16进制数化为ASCII码的一般方法。

实验内容及步骤:

一、用字符搜索法确定字符串长度:

1、用A命令在100H开始的内存处键入下列程序:

JMP START

DB 'This is the program to measure'

DB 'the length of a string!$'

START: MOV BX,102

MOV AL,24

XOR CL,CL

LOP: CMP AL,[BX]

JZ EXIT

INC BX

INC CL

JMP LOP

EXIT: INT3

2、用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?

二、16进制数化ASCII码的一般方法(显示内存内容)

1、用A命令在100H处键入下列程序:

MOVSI,0

MOVBL,10

LOP: MOVDL,[SI]

MOVCL,4

SHRDL,CL

CMPDL,0A

JC J1

ADD DL,7

J1: ADD DL,30

MOV AH,2

INT 21

MOV DL,[SI]

AND DL,0F

CMP DL,0A

JC J2

ADD DL,7

J2: ADD DL,30

MOV AH,2

INT 21

MOV DL,20

MOV AH,2

INT 21

INC SI

DEC BL

JNZ LOP

INT 20

2、用N,W命令将此程序用https://www.wendangku.net/doc/e31371328.html,文件名存入磁盘。

3、用Q命令退出DEBUG。

4、在DOS命令状态下直接运行https://www.wendangku.net/doc/e31371328.html,命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。

5、自编程序:修改上面程序,使除以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。

三、综合程序(选做):测量一字符串长度,并用16进制数显示之

程序:

JMP START

DB 'This is a program to measure the length of a string。'

DB 0D,0A

DB 'the length of the string is: $'

START: MOV AH,9

MOV DX,102

INT 21

MOV BX,101

MOV AL,'$'

MOV DH,FF

LOP: INC BX

INC DH

CMP AL,[BX]

JNZ LOP

MOV CH,2

MOV CL,4

LOP1: ROL DH,CL

MOV DL,DH

AND DL,0F

ADD DL,30

CMP DL,3A

JC J

ADD DL,7

J: MOV AH,2

INT 21

DEC CH

JNZ LOP1

INT 20

键入此程序,存入???.COM文件中并在DOS命令状态下直接运行之,若未出现预期结果,用

DEBUG检查有否错误?

实验报告要求:

1、自编程序草稿及调试后的正确程序。

指令系统和汇编语言程序的设计实验

第二章指令系统和汇编语言程序设计实验 本章实验主要包括指令系统和汇编语言程序设计两部分。采用软件模拟调试的方法, 目的在于通过这些实验可以使学生巩固所学知识, 加深对 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

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

汇编实验五条件转移指令

汇编实验五条件转移指令

————————————————————————————————作者:————————————————————————————————日期: 1

实 验 报 告 ── 学年 第 学期 实 验 课 程 汇编语言 学 生 姓 名 123 实 验 项 目 条件转移指令 学 院 计算机科学技术 实 验 性 质 专业选修课 班 级 学 号 实 验 地 点 同 组 人 数 1 第 组 实 验 日 期 第周 星期 第 节 成 绩 5 环 境 参 数 Dosbox-0.74 Masm 5.0 一、实验目的及要求 二、实验原理、实验内容 三、实验仪器设备及材料 四、操作方法与实验步骤 五、实验数据记录及处理 六、实验结果分析及讨论 一、实验目的: 1.8088指令:JZ,JNZ,JC,JNC,CMP,SHR 。 2.程序:用字符搜索法确定字符串长度。 3.程序:16进制数化为ASCII 码的一般方法。 二:实验任务 1.自编程序:修改实验准备程序(二),使除了以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII 字符,07-0D 的控制字符用'.'代替。 源代码:

DATA SEGMENT DATA ENDS STACKS SEGMENT STACK STACKS ENDS CODE SEGMENT 'code' ASSUME CS:CODE,DS:DATA,SS:STACKS START: MOV AX,DATA MOV DS,AX MOV SI,0H MOV BL,10H LOP:MOV DL,[SI] ;先处理高四位 MOV CL,4H SHR DL,CL ;右移四位 CMP DL,0AH ;判断是‘0’-‘9’还是‘a'-’f‘ JC J1 ;是0-9 跳转 ADD DL,7H ;是a-f 要多加7 因为‘9’为 390h ‘A' 为41h 相差7h J1: ADD DL,30H ;以'0'为基址 MOV AH,2H ;输出高四位的ASCII码 INT 21H MOV DL,[SI] ;处理第四位 AND DL,0FH CMP DL,0AH ;同上

计算机组成原理-指令扩展实验解析

《计算机组成原理A》课程设计性实验报告 开课实验室:计算机组成原理实验室年月日 实验题目指令扩展实验 一、实验目的 深入了解教学计算机微程序控制器的组成和设计技术,包括Am2910器件的功能与具体用法,教学计算机的总体组成和部件之间的连接方法,总之应该深入理解控制器部件的组成、设计、控制与使用等诸项知识。 二、设备与环境 TEC-XP+教学机,微机(装有Windows XP、ISPLEVER、ispVM System等软件)。 三、实验内容 在现有的基本指令系统上,扩展2条指令,分别是: 指令一:NXOR DR,SR ,其功能是(DR⊕SR) DR 。 指令二: SWRM DR,[SR] ,其功能是DR与[SR]的值互换,实现寄存器与内存单元(通过间接寻址方式)之间的数据传送。 四、实验步骤 1、CPU模型

2、微程序控制器组成原理框图 3、机器指令与微指令关系 ① PC:存放下一条机器指令的地址(向指令存储器提供指令地 址)。 ②指令存储器:(存放所有机器指令),经地址译码,选中相 应存储单元,取出相应机器指令,送入指令寄存器IR。 ③指令寄存器IR:存放正在执行的机器指令。机器指令包含 两个字段:操作码(OP)、地址码。 ④由操作码(OP)映射得到微地址(译码过程),即机器指令 所对应的微程序入口地址,存入微地址寄存器。 ⑤控制存储器存放所有的微程序,经地址译码读出一条微指 令。 ⑥由控制存储器读出的一条微指令存入微指令寄存器。 4、教学机TEC-XP的控制器提供的控制信号(微指令格式) ① B0-B5字段:DC1:CPU内部总线数据来源选择控制,详 见表1-1;DC2:专用寄存器接收控制,详见表1-2。 ② B6-B11字段:SSH SCI:最低进位输入、移位输入控制 信号,详见表2-1;SST:状态寄存器控制信号,详见表 2-2。 ③ B12-B19字段:A口:0000表示不使用寄存器,1000 表示取IR中的SR,0100表示R4(SP),0101表示R5(PC);B口:0000表示不使用寄存器,1000表示取IR中的DR,0100表示R4(SP),0101表示R5(PC)。

实验一熟悉汇编语言上机环境.pdf

实验一熟悉汇编语言上机环境 一、实验目的 熟悉在微机上建立、汇编、连接、调试和运行汇编语言程序的全过程。 二、实验要求 1.仔细阅读本实验教程的第一章和第二章; 2.学会使用EDIT建立汇编语言源程序文件; 3.学会使用MASM将汇编语言源程序编译为目标程序的两种方法; 4.学会使用LINK将目标程序连接为可执行程序的两种方法; 5.学会使用DEBUG中的U、D、G命令。 三、实验举例 【例3.1】 编辑、汇编、连接、执行下列程序,观察实验结果。 【程序功能】该程序的功能是利用BIOS功能调用,从键盘上接收若干个字符,并将它们的ASCII码与键盘扫描码以十六进制的形式显示出来,当按下+键时,停止程序的执行。 【步骤一】 用EDIT编辑源程序,并以EXAM1.ASM为文件名存入磁盘。 程序清单如下: SSEG SEGMENT STACK STK DB 80H DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,SS:SSEG HTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码 AND AL,0FH CMP AL,10 JC HTOA1 ADD AL,07 HTOA1: ADD AL,30H RET HTOA ENDP BHTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码 PUSH CX MOV CH,AL MOV CL,04 SHR AL,CL CALL HTOA MOV AH,AL MOV AL,CH CALL HTOA POP CX RET BHTOA ENDP DISASC PROCN EAR ;该子程序的功能是在光标处显示AL中的字符 PUSH AX

5控制转移指令实验

2.5 控制转移指令实验 一、实验目的 ·掌握无条件转移指令和条件转移指令的使用。 ·掌握调用指令和返回指令的使用。 ·掌握用Keil调试汇编源程序的方法。 ·掌握用Proteus调试汇编源程序的方法。 二、实验预备知识 无条件转移指令是指当程序执行到该指令时,程序无条件转移到指令所提供的地址处执行。有长转移指令( LJMP)、绝对转移指令(AJMP)和相对转移指令(SJMP)三种。 条件转移指令是指根据给出的条件进行判断,若条件满足,则程序转向由偏移量确定的目的地址处去执行;若条件不满足,程序将不会转移,而是按原顺序执行。相对偏移量为一个带符号的8位数,偏移范围为-128~十127,共256个字节。共有三种: ◇累加器A判零转移指令(JZ、JNZ)。该指令对累加器A的内容为零和不为零进行检测并转移,不改变累加器A的内容,也不影响任何标志位。 ◇减l非零转移指令又称循环转移指令( DJNZ)。该指令是把源操作数减1,结果送回到源操作数中去;并判断结果是否为O,若不为O则转移到目标地址,继续执行循环程序;若为0则终止循环程序的执行。 ◇比较转移指令(CJNE)。该指令对指定的目的字节和源字节进行比较,若它们的值不相等,则转移。 把具有一定功能的公用程序段作为子程序,在主程序中采用调用指令( LCALL、 ACALL)调用子程序,子程序的最后一条指令为返回主程序指令(RET)。 长调用指令( LCALL)的执行过程是先将(PC)+3→PC,指向下一指令地址;再将把下一指令的16位地址(断点)压入堆栈,先压人PC0~7低位地址,后压入PC8~15高位地址,(SP)十2→SP;最后将指令中给出的16位目标地址addr16送入程序计数器PC。从而使程序转向目标地址addr16去执行被调用的子程序。 子程序返回指令(RET)的作用是将栈顶的断点地址送PC,于是,子程序返回主程序继续执行。 三、实验内容 根据控制转移类指令的不同用途,分别编写二个小程序,以完成程序在不同条件下的转移、调用。 1.参考程序1——累加器A判零转移指令和无条件转移指令 (1)将立即数#01H传送至A中。 (2)判断A中的内容,若(A)=OOH,则顺序执行MOV A,#02H指令;若(A)≠ OOH,则转移执行DEC A指令;循环往复执行相关指令。 2.参考程序2——减1非零转移指令、调用指令和返回指令 (1)将片内RAM20H~22H单元全部送入立即数#11H。 (2)调用子程序将立即数#55H传送至片内RAM22H单元中。 (3)返回主程序将立即数#55H分别传送至片内RAM20H、21H单元中。 四、买验参考程序

关于第十讲控制转移类指令

第九讲控制转移类指令 教学方法: 讲授法 教学目的: 1、了解控制转移类指令的种类 2、掌握无条件转移指令的特点及应用 3、掌握调用指令的特点及应用 教学重点、难点: 各类指令操作功能循环、移位指令 条件转移指令的特点及应用 主要教学内容(提纲): 一、控制转移类指令的种类 二、无条件转移指令的特点及应用 三、调用指令的特点及应用 复习:逻辑操作指令,单字节:CLR,CPL,RL,RLC,RR,RRC 双字节:ANL,ORL,XRL。 讲授要点 §3-5 控制转移类指令 作用:改变程序计数器PC的值,从而改变程序执行方向。 分为四大类:无条件转移指令;条件转移指令;调用指令;返回指令。 一、无条件转移指令 LJMP addr16 AJMP addr11 SJMP rel JMP @A + DPTR LJMP addr16 ;长跳转 转移目的地址addr16 (PC);0000H ~ FFFFH,64KB AJMP addr11 ;绝对转移 转移目的地址的形成:先(PC)(PC)+ 2; 后PC15 ~ 11不变,PC10 ~ 0 addr10 ~ 0 64KB = 216 =25×211 = 32×2KB 转移目的地址与(PC)+ 2在同一个2KB范围内。

SJMP rel ;短转移,相对寻址。 转移目的地址= (PC)+ 2 + rel, 所以rel = 转移目的地址-(PC)-2 但,实际使用中常写成SJMP addr16,汇编时会自动转换出rel。 JMP @A + DPTR ;间接转移,散转移指令。 转移目的地址= (@A)+ (DPTR) 本指令不影响标志位,不改变@ A 及DPTR中的内容。常用于多分支程序结构中,可在程序运行过程中动态地决定程序分支走向。 例1、设A中为键值,试编写按键值处理相应事件的程序段。 解:MOV DPTR,#KYEG MOV B,#03H MUL AB JMP @A + DPTR · KYEG:LJMP KYEG0 LJMP KYEG1 · 画图比较LJMP、AJMP、SJMP、JMP转移的起点和范围。 二、调用指令 LCALL addr16 ;长调用 ACALL addr11 ;绝对调用 LCALL addr16 ;转移范围64KB,不影响标志位。执行中自动完成如下过程:(PC)(PC)+ 3 (SP)(SP)+ 1 ((SP))(PC7 ~ 0),保护断点地址低字节; (SP)(SP)+ 2 ((SP))(PC15 ~ 8),保存断点地址高字节; (PC)addr16 ,目的地址送PC,转子程序。 例2、设(SP)= 07H,(PC)= 2100H,子程序首地址为3456H,执行: LCALL 3456H MOV A,20H ······ 画出执行过程示意图。 执行结果:(SP)= 09H,(09H)= 21H,(08H)= 03H,(PC)= 3456H

汇编语言上机实验汇总

汇编语言程序设计的实验环境及实验步骤 知识提要: 1、汇编语言源程序编写好以后, (1) 编辑源程序(生成 .ASM (2) 汇编源程序(.ASM → .OBJ (3) 连接目标程序(.OBJ → .EXE (4) 调试可执行程序(使用调试程序Debug 调试生成的.EXE 文件) (5) 运行程序输出结果。 2、 Windows 环境下的汇编语言集成编程环境的使用 实验一 汇编语言上机实验(一) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT 编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM 的使用; 4、熟练掌握连接程序LINK 的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2、软件环境:装有MASM 、DEBUG 、LINK 等应用程序。 三、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT 建立汇编语言源程序文件(ASM 文件)

建议源程序存放的目录名为MASM中,MASM子目录在D盘的根目录下。 可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立run源文件 进入EDIT的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR

计算机组成原理实验

实验一基础汇编语言程序设计 一、实验目的: 1、学习和了解TEC-XP16教学实验系统监控命令的用法。 2、学习和了解TEC-XP16教学实验系统的指令系统。 3、学习简单的TEC-XP16教学实验系统汇编程序设计。 二、预习要求: 1、学习TEC-XP16机监控命令的用法。 2、学习TEC-XP16机的指令系统、汇编程序设计及监控程序中子程序调用。 3、学习TEC-XP16机的使用,包括开关、指示灯、按键等。 4、了解实验内容、实验步骤和要求。 三、实验步骤: 在教学计算机硬件系统上建立与调试汇编程序有几种操作办法。 第一种办法,是使用监控程序的A命令,逐行输入并直接汇编单条的汇编语句,之后使用G命令运行这个程序。缺点是不支持汇编伪指令,修改已有程序源代码相对麻烦一些,适用于建立与运行短小的汇编程序。 第二种办法,是使用增强型的监控程序中的W命令建立完整的汇编程序,然后用M命令对建立起来的汇编程序执行汇编操作,接下来用G命令运行这个程序。适用于比较短小的程序。此时可以支持汇编伪指令,修改已经在内存中的汇编程序源代码的操作更方便一些。 第三种办法,是使用交叉汇编程序ASEC,首先在PC机上,用PC机的编辑程序建立完整的汇编程序,然后用ASEC对建立起来的汇编程序执行汇编操作,接下来把汇编操作产生的二进制的机器指令代码文件内容传送到教学机的内存中,就可以运行这个程序了。适用于规模任意大小的程序。

在这里我们只采用第一种方法。 在TEC-XP16机终端上调试汇编程序要经过以下几步: 1、使教学计算机处于正常运行状态(具体步骤见附录联机通讯指南)。 2、使用监控命令输入程序并调试。 ⑴用监控命令A输入汇编程序 >A 或>A 主存地址 如:在命令行提示符状态下输入: A 2000↙;表示该程序从2000H(内存RAM区的起始地址)地址开始 屏幕将显示: 2000: 输入如下形式的程序: 2000: MVRD R0,AAAA ;MVRD 与R0 之间有且只有一个空格,其他指令相同 2002: MVRD R1,5555 2004: ADD R0,R1 2005: AND R0,R1 2006: RET ;程序的最后一个语句,必须为RET 指令 2007:(直接敲回车键,结束A 命令输入程序的操作过程) 若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。 ⑵用监控命令U调出输入过的程序并显示在屏幕上 >U 或>U 主存地址

第3章-MCS-51系列单片机的指令系统和汇编语言程序范文

第3章MCS一51系列单片机的指令系统 和汇编语言程序 3·1汇编指令 3·1·1请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么这三种语言缺一不可。 3·1·2请总结: (1)汇编语言程序的优缺点和适用场合。 (2)学习微机原理课程时,为什么一定要学汇编语言程序? 3·1·3MCS一51系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象与寻址范围。 3·1·4要访问片内RAM,可有哪几种寻址方式? 3·1·5要访问片外RAM,有哪几种寻址方式? 3·1·6要访问ROM,又有哪几种寻址方式? 3·1·7试按寻址方式对MCS一51系列单片机的各指令重新进行归类(一般根据源操作数寻址方式归类,程序转移类指令例外)。 3·1·8试分别针对51子系列与52子系列,说明MOV A,direct指令与MOV A,@Rj 指令的访问范围。 3·1·9传送类指令中哪几个小类是访问RAM的?哪几个小类是访问ROM的?为什么访问ROM的指令那么少?CPU访问ROM多不多?什么时候需要访问ROM? 3·1·10试绘图示明MCS一51系列单片机数据传送类指令可满足的各种传送关系。3·1·11请选用指令,分别达到下列操作: (1)将累加器内容送工作寄存器R6. (2)将累加器内容送片内RAM的7BH单元。 (3)将累加器内容送片外RAM的7BH单元。 (4)将累加器内容送片外RAM的007BH单元。 (5)将ROM007BH单元内容送累加器。 3·1·12 区分下列指令的不同功能: (l)MOV A,#24H 与MOV A.24H (2)MOV A,R0与MOV A,@R0 (3)MOV A,@R0与MOVX A,@R0 3·1·13设片内RAM 30H单元的内容为40H; 片内RAM 40H单元的内容为l0H; 片内RAM l0H单元的内容为00H; (Pl)=0CAH。 请写出下列各指令的机器码与执行下列指令后的结果(指各有关寄存器、RAM单元与端口的内容)。 MOV R0,#30H MOV A,@R0 MOV RI,A MOV B,@Rl MOV @R0,Pl MOV P3,Pl MOV l0H,#20H MOV 30H,l0H

汇编语言上机实验

汇编语言程序设计的实验环境及实验步骤 知识提要: 1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行: (1) 编辑源程序(生成.ASM文件) (2) 汇编源程序(.ASM → .OBJ) (3) 连接目标程序(.OBJ → .EXE ) (4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5) 运行程序输出结果。 2、Windows环境下的汇编语言集成编程环境的使用 实验一汇编语言上机实验(一) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM、DEBUG、LINK等应用程序。 三、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)

建议源程序存放的目录名为MASM中,MASM子目录在D盘的根目录下。 可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立run源文件 进入EDIT的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR

单片机实验5个

HEFEI UNIVERSITY 单片机实训 题目单片机应用技术实验 系别电子信息与电气工程系 专业自动化 班级自动化()班 成员 学号 指导老师储忠 完成时间2011-6-20

实验内容及要求 实验一构建单片机最小系统和实验环境熟悉 1、熟悉单片机最小系统的组成和工作原理,熟悉Keil C51集成环境软件的安装和使用方法。 2、作出单片机最小系统的组成原理图,分析其各构成单元的工作原理。 3、熟悉MCS51汇编指令。 4、进行存储单元数据传输实验,编写程序。 5、运行程序,验证译码的正确性。 实验二跑马灯实验及74HC138译码器 跑马灯实验: 1、熟悉集成环境软件或熟悉Keil C51集成环境软件的安装和使用方法。 2、8个指示灯,循环点亮,瞬间只有一个灯亮。 3、观察实验结果,验证程序是否正确。 74HC138译码器实验: 1、设计74HC138接口电路,编写程序:使用单片机的P1.0、P1.1、P1.2控制74HC138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个LED指示灯。 2、运行程序,验证译码的正确性。 实验三8255控制交通灯实验 1、设计8255接口电路,编写程序:使用8255的PA0.. 2、PA5..7控制LED指示灯,实现交通灯功能。 2、连接线路验证8255的功能,熟悉它的使用方法。 实验四8253方波实验 1、设计接口电路,编写程序:使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。 2、连接线路,验证8253的功能,熟悉它的使用方法。

第11讲 控制转移类指令(二)教案

第十一讲控制转移类指令 二、条件转移指令 实现按照一定条件决定转移的方向。分三类。 1、判零转移 JZ rel JNZ rel JZ rel ;若(A)= 0 ,则转移,否则顺序执行。 JNZ rel ;若(A)≠0,则转移,否则顺序执行。 转移目的地址= (PC)+ 2 + rel 不影响任何标志位。 例1、将外RAM的一个数据块(首地址为DATA1)传送到内部数据RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。 解:MOV R0,#DATA2 MOV DPTR,#DATA1 LOOP1:MOVX A,@DPTR JZ LOOP2 MOV @R0,A INC R0 INC DPTR SJMP LOOP1 LOOP2:SJMP LOOP2 2、比较转移指令 功能:比较二个字节中的值,若不等,则转移。 CINE A,#data,rel CJNE A,direct,rel CJNE @Ri,#data,rel CJNE Rn,#data,rel 该类指令具有比较和判断双重功能,比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。 转移目的地址= (PC)+ 3 + rel

若第一操作数内容小于第二操作数内容,则(C)= 1,否则(C)= 0。 该类指令可产生三分支程序: 即,相等分支;大于分支;小于分支。 例2、设P1口的P1.0 ~ P1.3为准备就绪信号输入端,当该四位为全1时,说明各项工作已准备好,单片机可顺序执行,否则,循环等待。 解:MOV A,P1 ANL A,#0FH CJNE A,#0FH,WAIT ;P1.0 ~ P1.3不为全1时,返回WAIT MOV A,R2 ······ 3、循环转移指令 DJNZ Rn,rel ;(二字节指令) DINZ direct,rel ;(三字节指令) 本指令也为双功能指令,即减1操作和判断转移操作。 第一操作数内容减1后,若差值不为零,则转移;否则顺序执行。 转移目的地址= (PC)+ 2或3 + rel 例3、将8031内部RAM的40H ~ 4FH单元置初值#A0H ~ #AFH。 解:MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP:MOV @R0,A INC R0 INC A DJNZ R2,LOOP ······ 小结:1、无条件转移指令共有几条? 2、CJNE指令与DJNZ指令有何区别?

指令系统及汇编语言程序设计

第3章指令系统及汇编语言程序设计 一、简答题 1、80C51系列单片机的指令系统有何特点? 2、80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何? 3、访问特殊功能寄存器SFR可以采用哪些寻址方式? 4、访问内部RAM单元可以采用哪些寻址方式? 5、访问外部RAM单元可以采用哪些寻址方式? 6、访问外部程序存储器可以采用哪些寻址方式? 7、为什么说布尔处理功能是80C51单片机的重要特点? 8、对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问? 9、试根据指令编码表写出下列指令的机器码。 (1)MOV A,#88H (2)MOV R3,50H (3)MOV P1.1,#55H (4)ADD A,@R1 (5)SETB 12H 10、完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指 令序列。 (1)将R0的内容传送到R1; (2)内部RAM单元60H的内容传送到寄存器R2; (3)外部RAM单元1000H的内容传送到内部RAM单元60H; (4)外部RAM单元1000H的内容传送到寄存器R2; (5)外部RAM单元1000H的内容传送到外部RAM单元2000H。 11、11、若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段 后上述各单元内容的变化。 MOV A,@R1 MOV @R1,40H MOV 40H,A MOV R1,#7FH 12、若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20)=0FH, 试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指 出CY、AC、和OV的值。 (1)MOV A,@R0 (2)ANL 40H,#0FH (3)ADD A,R4 (4)SWAP A (5)DEC @R1 (6)XCHD A,@R1 13、若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、 42H单元中的内容各为多少? MOV A,50H MOV R0,A MOV A,#00H MOV @R0,A MOV A,3BH MOV 41H,A MOV 42H,41H 14、试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。

汇编语言实验报告

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个节内容

说明: 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ① D SEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容 -D 200 ;显示DS段, 0200H开始的128个字节内容

设计一条条件转移指令

实验报告 实验人:赵汝鹏学号: 09381052 日期: 2010-12-15 院(系):计算机科学系专业(班级):网络工程 实验题目:设计一条条件转移指令 一.实验目的 1.了解和掌握微程序控制器的组成和工作原理; 2.进一步了解和掌握计算机各部分的组成及相互关系; 3.了解微指令的执行过程,掌握微程序的设计方法,理解动态微程序设计的概念; 4.进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理。 二.实验内容 设计一条指令,实现的功能是: 当DR=SR时,则原PC(IP)+OFFSET->PC; 当DRPC。 否则执行下条汇编指令。(注:OFFSET为位移量;ADDR为某内存单元地址) 三.实验器材 TEC-2实验计算机、电脑各一台 四.实验分析与设计 (2)指令功能 功能:设计一条指令,实现的功能是: 当DR=SR时,则原PC(IP)+OFFSET->PC; 当DRPC。 否则执行下条汇编指令。(注:OFFSET为位移量;ADDR为某内存单元地址) (3)设计分析 由于要根据DR与SR运算结果进行跳转,所以在110先让DR-SR产生DR与SR 的信息在状态寄存器。在111这里如果Z=1,则跳转至114进行下一步操作,否则 继续执行下一条;在112这里如果S=1,则转115进行下一步操作,否则执行下一 条。如果111与112都没有跳转,证明DR-SR>0,则让PC等于下一条指令的地址。 操作码选择DB,因为如此IR8-10位是011,CC非的值等于S非的值。

(4) 微程序 110:DR-SR 0000 0E01 9110 0088 111:PC->AR, 如果DR=SR转114 0045 0370 9030 5002 112:PC+1->AR,如果DRPC,转4A 0029 0300 B030 5400 114:IP+OFFSET->PC 0029 0300 30D6 5000 115:ADDR->PC 0029 0300 30F0 5000 (5) 加载到微控存程序段 A800 800:MOV R1, 900 802:MOV R2, 6 804:MOV R3, 110 806:LDMC 807:RET 808: G800 (6) 运行程序段 A820 820:MOV R7, 7 822:MOV R8, 8 824:MOV R9, 0 826:NOP 827:NOP 828:NOP 829:MOV R9, 1 82B:RET 82C:MOV R9, 2 82E:RET 82F:MOV R9, 3 831:RET 832: E826 DB78 0006 082F G820 第一种情况是DRSR

实验6_分支程序设计

实验六 分支程序设计 6.1 实验目的 (1)学习转移指令及与转移有关的寻址方式 (2)掌握分支程序的结构 (3)掌握分支程序的设计、调试方法。 6.2 预备知识 汇编语言中,实现分支的条件往往是通过标志寄存器中条件标志的不同状态反映的,执行流程的改变则是通过条件转移和无条件转移实现的。条件转移指令对前面指令影响的标志位进行判别,决定程序的流向。如果条件满足则转移,否则执行下一条指令。 下面给出与分支程序设计相关的指令以供参考。 表6-1单标志判断条件转移指令 名称 指令格式 测试条件 测试进位标志 JC tag CF=1 JNC tag CF=0 测试零标志 JZ tag ZF=1 JNZ tag ZF=0 测试溢出标志 JO tag OF=1 JNO tag OF=0 测试奇偶标志 JP/JPE PF=1 JNP/JPO PF=0 测试符号标志 JS tag SF=1 JNS tag SF=0 表6-2两数关系判断条件转移指令 类型 名称 指令格式 测试条件 相等 相等 JE/JZ tag ZF=1,X=Y 不相等 JNE/JNZ tag ZF=0,X!=Y 无符号数 低于/不高于等于 JB/JNAE tag CF=1, XY 高于等于/不低于 JAE/JNB tag CF=0∨ZF=1,X>=Y 带符号数 小于/不大于等于 JL/JNGE tag (SF⊕OF)=1, XY 大于等于/不小于 JGE/JNL tag (SF⊕OF)=0, X>=Y

指令系统及汇编语言程序设计

指令系统及汇编语言程序设计 2.4 伪指令 伪指令本身不会产生可执行的机器指令代码,它仅仅是告诉汇编程序有关源程序的某些信息,或者用来说明内存单元的用途。伪指令在汇编过程中由汇编程序进行处理。 2.4.1 数据定义伪指令 数据定义伪指令用于定义变量的类型、给存储器赋初值或给变量分配存储单元。常用的数据定义伪指令有DB、DW和DD等。 格式: [变量名] 伪指令助记符数据表项 功能:定义一个数据存储区,其类型由所定义的数据定义指令而指定。 操作说明:方括号中的变量名为任选项,变量名后面不跟冒号“:”。数据表项可以包含多个数据之间用逗号分隔开。数据定义伪指令助记符有以下三种: (1) DB定义变量类型为字节(BYTE),DB后面的每个数据占一个字节。 (2) DW 定义变量类型为字(WORD),DW后面的每个数据占一个字,即两个字节。在内存中,低字节在前,高字节在后。 (3) DD 定义变量类型为双字(DWORD),后面的每个数据占两个字。在内存中,低位字在前,高位字在后。 例如,有下列数据定义语句 D1 DB 1,-12 D2 DW 1,2010H D3 DD 1,10203040H 数据表项中除了常数、表达式和字符串外,还可以是问号“?”,它仅给变量保留相应的存储单元,而不给变量赋初值。相同的操作数重复出现时,可用重复符号“DUP”表示。 其格式为: n DUP(初值[,初值,……]);n表示重复的次数,圆括号中为重复的内容。 下面是用问号或DUP表示操作数的例子: ARRAY DB 1000 DUP(0) VAR DW ?,? 2.4.2 符号定义伪指令 1. 赋值伪指令 格式:变量名 EOU 表达式 功能:将右边表达式的值赋给左边的变量。 操作说明:表达式可以是一个常数、符号、数值表达式或地址表达式。 需要注意的是:EQU伪指令不允许对同一符号重复定义。 EQU伪指令具体应用举例如下: CR EQU ODH ;定义CR为常数(回车的ASCII代码) TAB EQU TABLE-ASCII ;定义变量 DIS EQU 1024*768 ;定义数值表达式 ADR EQU ES:[DI+3] ;定义地址表达式 M EQU MOV ;定义助记符 2.等号(=)伪指令 格式:变量名=表达式 功能:将右边表达式的值赋给左边的变量。 操作说明:等号(=)伪指令的功能与EQU伪指令相仿,它可以对同一个名字重复定义。

相关文档