北京理工大学单片机第四部分汇编程序设计
北京理工大学总汇编实验报告材料实验四

本科实验报告实验名称:分支和循环实验一、实验目的1)掌握比较指令;2)理解条件转移和无条件转移指令的区别;3)掌握单分支、双分支、多分支的程序设计方法;4)掌握循环程序设计方法。
二、实验内容内容一程序代码:DATAS SEGMENTBUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH COUNT EQU $-BUFNUM1 DB 0NUM2 DB 0BUF1 DB 00,00BUF2 DB 00,00DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV CX,COUNTMOV SI,0MOV DI,0L:MOV AL,BUF[SI]CMP AL,0JG L1INC NUM2CBWADC WORD PTR BUF2[DI],AXJMP L2L1:INC NUM1CBWADC WORD PTR BUF1[DI],AX L2:INC SILOOP LMOV AH,4CHINT 21HCODES ENDSEND START程序运行结果:内容二实验代码:DATAS SEGMENTBUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH COUNT EQU $-BUFMAX DB 0MIN DB 0DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV CX,COUNTMOV SI,0MOV AL,BUF[SI]MOV MAX,ALL:INC SIMOV AL,BUF[SI]CMP AL,MAXJL L1MOV MAX,ALL1:DEC CXJNZ LMOV CX,COUNTMOV SI,0MOV AL,BUF[SI]MOV MIN,ALM:INC SIMOV AL,BUF[SI]CMP AL,MINJA M1MOV MIN,ALM1:DEC CXJNZ MMOV AH,4CHINT 21HCODES ENDSEND START程序运行结果:所以可得有符号数的最大值为78H,无符号数的最小值12H。
北京理工大学汇编语言实验报告一

汇编语言实验报告实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)班级:05211002姓名:张宁学号:1120102310实验日期:2012.9.7晚6:00~9:00汇编语言实验报告实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型)一、实验要求和目的1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;2、熟练掌握宏汇编程序MASM 的使用;3、熟练掌握连接程序LINK 的使用;4、熟练掌握DEBUG 的使用;二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识汇编语言程序设计上机开发过程如图1.1 所示。
四、实验内容与步骤1、汇编、链接并调试给出的简单程序,找出程序中的错误。
(一)录入并建立汇编语言源程序文件(ASM 文件)(二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)(三)用连接程序LINK 生成可执行程序文件(EXE 文件)(四)程序的调试2、完成程序设计:分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。
使用Debug 查看Positive、Negative 和Zero 三个变量的数据。
五、实验过程及结果:实验一:1.输入给出的程序2.运行输入的程序,发现了三处错误:根据错误提示,发现错误为ADDITION后未打冒号,CMP错打为COM。
修改原代码:改为:3.代码编译成功,生成OBJ文件,再生成EXE文件,可成功运行。
4.在原程序代码后添加两行代码,以验证ADDITION的逻辑正确性,改动如下:现实在DATA1中添加字节型sum ,再将ADDITION的运行结果,从AX送到sum中去。
5.调试发现ADDITION并没用正确运行。
检查语句逻辑性发现,应将JAE改成JB,才能实现累加并终结。
北京理工汇编语言实验一实验报告

汇编语言实验一实验报告——DOS 环境下的汇编语言编程环境使用班级:05211102姓名:庞珂学号:1120111306日期:2013.9.2早8:30~11:30实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)一、实验要求和目的1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;2、熟练掌握宏汇编程序MASM 的使用;3、熟练掌握连接程序LINK 的使用;4、熟练掌握DEBUG 的使用;二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识汇编语言程序设计上机开发过程如图1.1 所示:1、汇编语言源程序的汇编过程汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中以ASCII 码表示的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立3 个文件:扩展名为 .OBJ 的目标文件、扩展名为 .LST 的列表文件和扩展名为 .CRF 的交叉索引文件。
2、目标程序的连接过程连接程序进行连接时,其输入有两个部分:一是目标文件(.OBJ),目标文件可以是一个也可以是多个,可以是汇编语言经汇编后产生的目标文件,也可以是高级语言(例如C 语言)经编译后产生的目标文件;另一是库文件(.LIB),库文件是系统中已经建立的,主要是为高级语言提供的。
连接后输出两个文件,一是扩展名为 .EXE 的可执行文件,另一个是扩展名为 .MAP 的内存分配文件。
3、Debug 调试过程一个程序特别是比较复杂的程序不能保证没有一点错误。
因此,在投入正式运行前必须进行调试,以检查程序的正确性。
调试程序Debug 就是用来调试汇编语言程序的一种工具。
四、实验内容与步骤1、汇编、链接并调试给出的简单程序,找出程序中的错误。
(一)录入并建立汇编语言源程序文件(ASM 文件),例如:D:\MASM> EDIT TEST01.ASM;TEST01.ASM with several errorsDATA1 SEGMENTword1 DW 1, 9078Hbyte1 DB 21, 'World'DD 12345678HMsg DB 'Hello ,everyone!$'DATA1 ENDSSTACK SEGMENTsta dw 20 dup(?)Top equ size staSTACK ENDScode segmentassume cs:code,ds:data1,ss:stackStart:MOV AX,data1MOV DS,AXMOV DX,OFFSET MsgMOV AH,9INT 21hNopMOV AX,0MOV BX,1HADDITIONADD AX,BXINC BXCOM BX,10JAE ADDITIONMOV AH,4ch ;DOS terminate program functionINT 21hCode endsEND Start(二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)其操作步骤如下: D:\MASM>MASM TEST01Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved.Object filename [TEST01.OBJ]:Source listing [NUL.LST]:TEST01Cross-reference [NUL.CRF]:TEST0150674 + 450574 Bytes symbol space free0 Warning Errors0 Severe Errors汇编程序调入后,首先显示版本号,然后出现三个提示行。
《单片机原理及应用教程》第4章:单片机的程序设计

格式:标号: DS 表达式 功能:从标号指定的地址单元开始,定义一个存储区,以 备源程序使用。存储区内预留的存储单元数由表达式的值 决定。 例如: ORG 3030H TIMER: DS 10H ┇
4.2 汇编语言源程序的编辑与汇编
4.2.1 源程序的编辑
编写完成的源程序应以“.ASM”的扩展名保存,以备汇编程序调用。
4.4 思考练习题
(1)简述汇编语言的特点。 (2)什么是伪指令?简述常用伪指令的功能。 (3)按照执行的方式,程序可分为哪几类? (4)在编写子程序时,应注意哪些问题? (5)编写一段程序,将外部RAM中2000H~2020H单元的内容送入内部 RAM的30H~50H单元中。 (6)编写程序,求出片内40H单元内容中所有“0”的个数,结果存入50H。 (7)在内部RAM单元30H开始的5个单元中,存放着5个压缩BCD码,编 写一段程序,将它们转换成ASCII码,并存放到40H开始的单元中。 (8)编程求出内部RAM中从30H开始的连续20个单元中的内容的平均值, 并存入60H单元中。 (9)编程完成以下功能:检测内部RAM单元30H开始的32个数,若为正数 或0,则值不变;若为负数,则取补后送回。 (10)在内部RAM单元中,从30H开始连续存放着20个8位无符号数,编程 排列其顺序,使它们从20H单元开始,按照从大到小的顺序依次存放。
A
X
A
A-Y, B
Z
B、A
A× B
(34H) (35H)
B A
结束
程序清单如下:
ORG START: MOV SUBB MOV MUL MOV MOV SJMP
0030H A, 30H A, 31H B, 32H AB 34H, B 35H, A $
单片机技术4程序设计共60页文档

25、学习是劳动,是4程序设计
36、“不可能”这个字(法语是一个字 ),只 在愚人 的字典 中找得 到。--拿 破仑。 37、不要生气要争气,不要看破要突 破,不 要嫉妒 要欣赏 ,不要 托延要 积极, 不要心 动要行 动。 38、勤奋,机会,乐观是成功的三要 素。(注 意:传 统观念 认为勤 奋和机 会是成 功的要 素,但 是经过 统计学 和成功 人士的 分析得 出,乐 观是成 功的第 三要素 。
39、没有不老的誓言,没有不变的承 诺,踏 上旅途 ,义无 反顾。 40、对时间的价值没有没有深切认识 的人, 决不会 坚韧勤 勉。
21、要知道对好事的称颂过于夸大,也会招来人们的反感轻蔑和嫉妒。——培根 22、业精于勤,荒于嬉;行成于思,毁于随。——韩愈
单片机第4章汇编语言程序设计

4.2 伪指令
伪指令是在机器汇编中告诉汇编程序 如何汇编、对汇编过程进行控制的命令。 伪指令与汇编语言指令不同,只在源程序 中出现,不产生任何机器代码,在程序的 运行过程中不起作用,故称为“伪指令”。
处理 判断 连接
2.绘制程序流程图 简单的问题可由文字说明, 当问题复杂时,将文字说明的步骤以图形符号表示, 称流程图。
3.编写源程序 用汇编语言把流程图所表明的 步骤描述出来,实现流程图中每一框内的要求,从 而编制出一个有序的指令流,即汇编语言源程序。
4.汇编、调试 汇编语言是用指令助记符代替机 器码的编程语言,所编写的程序是不能在计算机上 直接执行的,因此利用它所编写的汇编语言程序必 须转换为单片机能执行的机器码形式的目标程序才 能运行,我们把这一过程称为汇编,进行汇编的程 序称为汇编程序。
4. 定义字伪指令DW
[标号:] DW 16位字数据表
该指令的功能与DB相似, 区别仅在于从指定地
址开始存放的是指令中的16位数据, 而不是字节串。
每个16位数据要占两个存储单元, 高8 位先存(低位
地址), 低 8 位后存(高位地址)。
1403H 3CH
ORG 1400H DATA1:DW 324AH,3CH
散转程序是分支程序的一种, 它可根据运算结果或输入数 据将程序转入不同的分支。MCS - 51 指令系统中有一条跳转指 令JMP@A+DPTR,用它可以很容易地实现散转功能。该指令 把累加器的8位无符号数与16位数据指针的内容相加, 并把相加 的结果装入程序计数器PC,控制程序转向目标地址去执行。
北京理工大学汇编语言实验报告实验五子程序设计实验

北京理工大学汇编语言实验报告实验五子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名 PROC [near/far]过程体RET过程名 ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。
.段内调用与返回:调用子程序指令与子程序同在一个段内。
因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。
3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。
一般利用堆栈实现现场保护和恢复的格式:过程名PROC [NEAR/FAR]PUSH BXPUSH DXPOP DXPOP AXRET过程名 ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。
2.存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。
北理工微机原理复习大纲

《微机原理与接口》复习大纲1、 课程简介以Intel 8088 16位微处理器为背景,介绍了8088微处理器的结构;指令系统与汇编程序设计;存储器系统设计;输入/输出接口电路设计与中断控制器8259A;并行接口芯片8255;串行接口芯片8250;定时/计数器8253;模拟量输入输出电路及接口设计等内容。
2、 课程重点章节及内容简介第一章 基础知识1、 常用数制:二、八、十、十六进制2、 原码、反码与补码、带符号数的运算时的溢出判断3、 常用逻辑门(与、或、非、与非、或非)、译码器(74LS138)与逻辑运算4、 二进制编码:BCD与ASCII编码、奇偶校验5、 微处理器的发展史:分代6、 作业:3、4、5、6、9、10、11第二章 微型计算机基础1、8088的内部结构(EU、BIU)、引脚与功能2、8088CPU的寄存器结构:通用、专用、标志寄存器3、8088微处理器的存储器组织、物理地址的计算4、8088总线周期5、8088CPU的最小/最大工作模式、典型操作时序图、最小模式下典型原理图的连接。
6、流水线技术、CACHE技术7、 总线的功能、性能指标、常用总线8、 作业:7、8、10、11、12、13、15、16、18第三章 指令系统1、指令的格式、指令的执行时间2、寻址方式(1)立即寻址汇编格式:n n为8bit或16bit 功能:n为操作数本身(2) 直接寻址 [n]功能:n为操作数的偏移地址(3)寄存器寻址汇编格式:R R为通用寄存器(4) 寄存器间接寻址汇编格式:[R]功能:R的内容为操作数的偏移地址(5) 寄存器相对寻址汇编格式:X[R] X为8位或16bit功能:R+X为操作数偏移地址(6) 基址加变址寻址汇编格式:[BR][IR]功能:BR+IR为操作数的偏移地址注:BR=BX,BP、 IR=SI,DI(7) 相对基址加变址寻址汇编格式: X[BR][IR] X为16bit 功能: BR+IR+X为操作数的偏移地址(8) 隐含寻址如:MUL BL3、8086/8088指令A、 数据传送指令(1) 通用数据传送指令① MOV d, s ② PUSH s③ POP d ④ XCHG d, s ⑤ XLAT注:d, s分别为目的、源操作数(地址)(2) 目标地址传送指令① LEA d, s ② LDS d, s ③ LES d, s(3) 标志位传送指令① LAH F ② SAH F ③ PUSH F ④ POP F(4) I/O数据传送指令① IN 累加器, 端口号 ② OUT 端口号,累加器B、算术运算指令(1) 加法指令① ADD d, s ② ADC d, s ③ INC d(2) 减法指令① SUB d, s ② SBB d, s ③ DEC d ④ NEG d(3) 乘法指令① MUL s ② IMUL s(4) 除法指令① DIV s ② IDIV s ③ CBW 和CWDC、逻辑运算和移位循环指令(1) 逻辑运算指令① AND d,s ② OR d,s ③ XOR d,s ④ NOT d ⑤ TEST d,s(2) 移位指令与循环移位指令SAL、 SHL、SAR、SHR、ROL、ROR、RCL、RCRD、串操作指令(1) MOVS d, sMOVSB/MOVSW(2) CMPS d, sCMPSB/CMPSW(3) SCAS d, sSCASB/SCASW(4) LODS d, sLODSB/LODSW(5) STOS d, sSTOSB/STOSWE、程序控制指令(1) 无条件转移指令 ① JMP目标标号 ② CALL 过程名(2) 条件转移指令 (3) 循环控制指令(4) 中断指令F、处理器控制指令(1) 标志操作指令:CLC、STC、CMC、CLD、STD、CLI、STI(2) 外部同步指令:HLT、NOP、WAIT、LOCK4、重要概念(1) 堆栈的概念:入栈、出栈、堆栈指针的位置(2) 物理地址的计算:寄存器与段寄存器的配合、计算(3) 段内与段间的转移与调用5、作业:2、3、5、6、7、9、12第四章 汇编语言程序设计1、 伪指令和程序结构2、 汇编语言程序设计:顺序、分支、循环结构、子程序结构(1) 程序分段及存储器分配(2) 变量定义(3) 过程的定义3、汇编程序的调试4、DOS功能调用4、典型汇编程序的编程5、作业:2、5、7、12、15、16、17第五章 半导体存储器1、 存储器的分类、主要技术指标2、 存储器与CPU的连接:(1)存储器的地址分配和片选问题;(2)与CPU典型的连接图;(3)存储器的扩展技术3、 DRAM的特点、CACHE的用处4、作业:4、5、6、7、10、11第六章 输入/输出和中断技术1、 I/O接口的概念、功能2、 I/O接口的编址方式3、地址译码、片选信号的产生4、 输入电路、输出电路的设计5、输入输出的控制方式:无条件传送、查询、中断、DMA6、中断技术(1) 中断的概念(2) 8086/8088中断源(内部/外部)(3) 中断的过程:请求、判优、响应、处理、返回(4) 中断向量表结构和功用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例2:从22H单元开始有一个无符号数据块,其长 度在20H中,求出其最大值,并存入21H中。
ORG 2000H CLR A MOV R2,20H MOV R1,#22H LP:CLR C SUBB A,@R1 JNC NEXT MOV A,@R1 SJMP NEXT1 NEXT:ADD A,@R1 NEXT1:INC R1 DJNZ R2,LP MOV 21H,A LP1:SJMP LP1 END
标号:由字母开始的1—8个字母或数字组成。 操作码:执行什么性质的指令。 操作数:根据需要,可能有0、1、2个,为参加 运算的数据。
注释:对程序的说明,可选择。
3、伪指令语句
(1)标号定义伪指令 ① 等值伪指令(EQU) 例如:TTY EQU 1080H 表示标号TTY的值为1080H,在程序中不能更改。
第四部分
§4.1 概述
汇编语言程序设计
一、 机器语言、汇编语言与高级语言
目前可用于程序设计的语言基本上可分为: 机器语言,汇编语言和高级语言。 1、机器语言:二进制代码。 2、汇编语言:助记符表示。 需要汇编程序将源程序转换为二进制 代码。
3、高级语言:自然语言,通用性好。 需要编译程序将其转换为可执行程序。
§4.3 分支程序设计
1、无条件转移 2、条件转移 3、散转
例1、存放于20H、21H中的两个无符号二进制
数,求其中的大数并存放在30H单元中。
MAIN:
MOV A, 20H CJNE A, 21H, : JC LOOP2
MOV 30H, A
MAIN: MOV SP,#3FH MOV A,31H LCALL SQR MOV R1,A MOV A,32H LCALL SQR ADD A,R1 MOV 33H,A SJMP $
SQR:INC A MOVC A,@A+PC RET T11: DB 0,1,4,9,16 DB 25,36,49 DB 64,81 END
段从整个程序中独立出来,单独编制成一个
程序段,尽量使其标准化,并存放于某一存
储区域。需要时通过指令进行调用。称为子
程序。
调用子程序的程序为主程序或调用程序。 子程序与主程序之间的关系如下图所示, 主程序两次调用子程序。
例1、用程序实现c=a2+b2,设a、b均小于10。a存 在31H中,b存在32H中,把c存在33H中。
MOVC A, @A+PC MOV R0 ,A
RET
TAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H,46H
§4.5 子程序设计 1、子程序
在实际的程序设计中,将那些需要多次应用
的,完成相同的某种基本运算或操作的程序
标号有字母和数符组成,字母开头,长度 不超过8个符号。
(2)数据说明伪指令
数据说明伪指令的作用是把数据存入指定的存储单元。
① 定义字节伪指令DB
FIRST DB 73H,04H,53H,38H 数据存放在从标号FIRST地址开始的连续存储单 元中。
FIRST FIRST+1 73 04
FIRST+2
53
②定义字伪指令(DW) DATA DW 1234H,0FEDCH
DATA
34 12
低字节在低地址 高字节在高地址
DATA+2
DC FE
③ 程序段说明伪指令ORG
ORG <表达式> ORG 1000H MAIN: MOV A,#12H 表示代码从1000H地址开始存放。
④ 汇编结束伪指令END
表示汇编程序的结束。在主程序或子程序 的最后。
三、程序设计的步骤
① ②
③
④
⑤
分析题意,确定算法. 根据算法画出程序框图 分配片内、片外存储器单元 编写源程序 上机调试、运行
§4.2 顺序与循环程序设计
一、顺序程序设计
例1:将20H单元的两个BCD码拆开并变成ASCII 码,存入21H、22H单元。
§4.6 综合编程举例
例1、将累加器A中0~FFH范围内的二进制数转换为 BCD数。
main: setb rs1 clr rs0 mov a,#0ffh mov r0,#30h mov b,#100 div ab ;商在a中,余数在b中 mov @r0,a inc r0 mov a,#10 xch a,b div ab swap a add a,b mov @r0,a nop sjmp $ end
SJMP LOOP3 LOOP2: MOV 30H, 21H
SJMP LOOP3
END
§4.4 查表程序设计
例1、设计一个将十六进制转换成ASCII码的子程 序。设十六进制数存放在R0中的低4位,要求将 转换的ASCII码送回R0。
ORG 2100H
MOV A, R0 ANL A, #0FH
ADD A, #02
ORG 2000H MOV A,20H MOV B,#10H DIV AB ORL B,#30H MOV 22H,B ORL A,#30H MOV 21H,A END
二、 循环程序设计
循环是CPU重复多次的执行一串指令的基本程序结 构。 循环结构的四个组成部分: 1、循环初态
2、循环体
3、循环控制部分
汇编语言效率最高,操作硬件方便。
二、汇编语句的规范 1、汇编语言语句的种类
汇编语言语句有三种基本类型:指令语句、 伪指令语句和宏指令语句。 指令语句:产生目标代码 伪指令语句:为汇编语言服务,不产生代码 宏指令语句:代替重复使用的一段程序
2、汇编语言语句的格式
标号: 操作码 操作数;注释
LP:MOV A, #20H; A←20H