北京理工大学单片机第四部分汇编程序设计


例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
合集下载

北京理工大学总汇编实验报告材料实验四

北京理工大学总汇编实验报告材料实验四

本科实验报告实验名称:分支和循环实验一、实验目的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章:单片机的程序设计

《单片机原理及应用教程》第4章:单片机的程序设计
4.1.6 预留存储区伪指令
格式:标号: 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页文档

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

单片机第4章汇编语言程序设计

单片机第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) 中断向量表结构和功用。

单片机汇编语言程序设计


4.1.2 汇编语言源程序的设计步骤 汇编语言源程序的设计过程的一般步 骤是: 分析任务 当我们要编写某个功能的应用程序时, 首先应该详细分析给定的任务。明确 哪些是任务所提供的基本条件,哪些 是任务要解决的具体问题,哪些是任 务所期望的最终目标。
4.1.2 汇编语言源程序的设计步骤
确定算法 任务明确之后,下一步就是确定解决问题的 方法。将给定的任务转换成计算机处理模式, 即通常所说的算法。对于较复杂的任务,需 要先用数学方法把问题抽象出来。往往同一 个数学表达式可以用多种算法实现,我们应 综合考虑寻找出其中的最佳方案,使程序所 占内存小,运行时间短。 画程序流程图 画流程图是把所采用的算法转换为汇编语言 语言程序的准备阶段,选择合适的程序结构, 把整个任务细化成若干个小的功能,使每个 小功能只对应几条语句。
4.3.1 顺序程序设计 【例4-6】
程序清单之二(采用DPTR当基址寄存器):
【例4-5】将片内RAM 30H的中间4位,31H的 低2位,32H的高2位按序拼成一个新字节,存 入33H单元。 分析:需要灵活掌握逻辑操作指令,对存储单 元的所需位进行保留,并移到字节中正确位置, 最后将相应位合并在一个字节。 ORG 0000H LJMP START ORG 0100H START: MOV A,30H ANL A,#3CH ;保留30H的中间4位原值,
4.2 汇编语言伪指令
8、BIT 位地址符号伪指令 格式:字符名称 BIT 位地址 功能:用规定的字符名称表示位地址。 例如: X0 BIT P1.0 X1 BIT 30H 经汇编后,P1口的第0位地址赋给X0, 位地址30H赋给X1。在程序中可以分别 用X0、X1代替P1.0和位地址30H。
4.3 简单程序设计

北京理工大学汇编实验报告

本科实验报告实验名称:实验二算术运算实验课程名称:课程设计Ⅰ(CPU与汇编)(实验)实验时间:第5-10周周五下午任课教师:聂青实验地点:10-102实验教师:京霞实验类型:☑原理验证□综合设计□自主创新学生:罗逸雨学号/班级:1120141208 05211401 组号:3学院:信息与电子学院同组搭档:专业:通信工程成绩:一、实验目的1) 掌握MASM for Windows 环境下的汇编语言编程环境使用;2) 掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;3) 掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;4) 掌握无符号数和有符号数运算区别及编程方法;二、实验环境与原理1.实验软硬件环境1) 硬件环境:惠普64 位一体化计算机及局域网;2) 软件环境:Windows 8,红蜘蛛管理系统,MASM for Windows。

2.实验原理算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。

1) 标志位在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。

2) 加减法指令ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。

3) 乘除法指令MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。

4) 符号位扩展指令CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。

5) BCD码的调整指令在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD 码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD 码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。

组合的BCD码加法调整指令DAA;组合的BCD码减法调整指令DAS;非组合的BCD码加法调整指令AAA;非组合的BCD码减法调整指令AAS;乘法的非组合BCD码调整指令AAM;除法的非组合BCD码调整指令AAD。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档