第十三次课 4-7子程序说明文件(微机原理)
《微机原理与接口技术》课程标准
炎黄技工学校《微机原理与接口技术》教学大纲理论课时36实践课时36总课时72考核形式考查编写时间2022-03编写人审核人机电信息工程系计算机技术教研室编《微机原理与接口技术》课程标准课程名称:微机原理与接口技术适用专业:计算机网络应用课程学分:4学分计划学时:72学时一、课程概述1、课程性质与任务本课《微机原理与接口技术》是计算机专业的一门重要的专业课,它的前续课程有《电子技术基础》、《电路原理》通过本课程的学习,为后续课程《微机控制技术》打下良好的基础。
同时与毕业设计密切相关,为它提供了硬件和软件的基础。
本课程介绍了微型计算机原理及组成结构、微机接口的有关基本知识和实用技术、常用微机接口芯片的使用方法。
2、课程基本理念结合我们学生的实际情况,在平时的教与学中主要遵循以下的理念:(1)将专业课的学习与基础理论衔接,指导学生有针对性地预习;(2)帮助学生形成强烈兴趣;(3)指导学生了解课程教学目的,教师结合教学大纲和自己对课程的把握情况,阐明《微机原理与接口技术》的课程特点;(4)培养学生良好的学习习惯。
3、课程设计思路1、总体设计原则与思路:按照“以能力为本位,以职业实践为主线,以项目课程为主体的模块化专业设计课程体系”的总体设计要求,该门课程以形成电机与变压器的原理与性能指标、运行调试及维护维修等能力为基本目标,彻底打破学科课程的设计思路,紧紧围铙工作任务完成的需求来选择和组织课程内容,突出工作任务与知识的联系,让学生在职业实践活动的基础上掌握知识,增强课程内容与职业岗位能力要求的相关性,提高学生的就业能力。
2课程设计依据与评价方法:学习项目选取的基本依据是该门课程涉及的工作领域和工作任务范围,但在具体设计过程中,以自动化专业学生的就业为向导,根据行业专家对自动化专业所涵盖的的岗位群体进行的任务和职业能力分析,同时遵循中等职业学校学生的认识规律,紧密集合职业资格证书中相关考核内容,确定本课程的工作任务模块和课程内容。
微机原理课程设计说明书(加热器)
1.课程设计任务书设计内容:设计当把物品放入加热器中,首先要启动加热器和电机工作,设定加热时间为3(5)分钟,为使物品均匀加热,每隔20(30)秒电机要反转一次,(正转→反转、反转→正转),加热时间到后,停止加热器和电机工作,并发声,告知加热结束。
设计目标:在规定的时间内设计出符合要求的汇编语言程序,并提交一份符合本科生毕业设计论文规范的报告。
进度安排:8月13日-8月16日-----------------------确定设计内容并完成硬件部分8月17日-8月21日------------------------------------完成程序清单8月22日-8月23日------------------------------完成课程设计说明书2. 总体设计思路2.1、分析设计所用到的芯片的原理及使用方法:⑴8259A的使用方法:8259A有四个初始化命令字ICW及3个操作操作命令字OCW。
8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1- OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4各命令字格式如图2-1所示,OCW1-OCW3各命令字格式如图2-2所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的8操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
图2-1ICW1-ICW4各命令字格式如图2-2OCW1-OCW3各命令字格式如图⑵8255的使用方法:方式0 —基本输入/出方式;方式1 —选通输入/出方式;方式2 —双向选通工作方式。
图2-3 8255命令字格式图⑶8253的使用方法:(1) 方式0:计数到0结束输出正跃变信号方式。
(2) 方式1:硬件可重触发单稳方式。
(3) 方式2:频率发生器方式。
(4) 方式3:方波发生器。
(5) 方式4:软件触发选通方式。
微机原理chapter4
CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备
一 汇编语言上机过程
编辑源程序EDIT ABC.ASM
•D:>EDIT ABC.asm •D:>MASM ABC;
有语法错,回EDIT下改该程序
汇编源程序 MASM ABC.ASM
有汇编错误信息 ? Y N
形成目标程序ABC.OBJ
•D:>LINK ABC;
每段由伪操作SEGMENT开始、由ENDS结束。
start:
CLD MOV
AX , aa
程序最后为END结束语句,后跟一启动地址。 启动地址指示程序开始执行的第一条语句。
MOV DS , AX LEA SI , str1 MOV AX , SEG str2
程序中设有返回DOS的功能。 使程序执行完后返回DOS系统的命令接受状态。
•简化的汇编语言程序框架(适用于masm5.0/6.0版本)
•
.model small ;定义程序的存储模式(小型模式)
•
.stack
;定义堆栈段(默认是1KB空间)
•
.data
;定义数据段
•
……
;数据定义
•
.code
;定义代码段
•start: mov ax,data ;程序起始点
•
mov ds,ax
•完整汇编语言程序框架(适用于所有masm版本)
data1 SEGMENT ;数据段1, (可据需要设定,也可无)
……
;变量定义
data1 ENDS
data2 SEGMENT ;数据段2 (可据需要设定,也可无)
……
data2 ENDS
code SEGMENT ;程序段
十三次课子程序说明文件微机原理
一、程序设计步骤
二、源程序的汇编、连接与调试 三、IBM PC 汇编语言程序源程序的完整结构及伪指令
四、顺序结构
五、分支结构
六、循环结构
七、子程序
八、DOS系统功能调用
九、字符串处理
十、宏指令
1
.
1、过程定义
七、 子程序
2
.
六、 子程序
概念:子程序为功能确定、且独立的程序段。
段内直接调用 段内间接调用
段间直接调用 段间间接调用
6
.
(cs)
(IP)
7
.
六、 子程序
段内调用 子过程与原调用程序在同一代码
段,在调用之前会自动把断点的 偏移地址压栈(调用指令的下一 条指令的地址)
CALL TIMER
断点
CALL WORD PTR [SI]
8
入口 地址
.
六、 子程序
段间调用 子过程与原调用程序不在同一代码段,在调用
解:在数据段中定义变量VAR1和CounterVar1:
VAR1
DW 1234H
CounterVar1 DB ?
则可在代码段中编写程序:
MOV AX, VAR1
CALL COUNTER1
MOV CounterVar1,BL
执行后,结果单元CounterVar1的值为5,说明
1234H中包含有5个“1”。
优点:
1. 可以将任何一段独立的程序归整为一个子程序, 当需要该段程序时,只需调用子程序即可,调 用后会自动返回到调用指令的下一条指令。因 此采用子程序设计时,可以简化程序设计。
2. 从调试程序的角度,由于原本在多处出现的程 序段,缩减为子程序调用指令,使调试程序更 加方便。
微机原理课件第13讲
第13讲上机实验二:从键盘输入2个4位的十进制数,相加并显示结果。
编程提示:①从键盘输入2个4位的十进制数并显示结果,屏幕应显示:1234 + 5678 = XXXXX②定义数据段存储输入的十进制数和运算结果DATA SEGMENTX1 DB 4 DUP(0)X2 DB 4 DUP(0)X3 DB 5 DUP(0)DATA ENDS③输入时要检查是否为数字,如不是数字,则不应接受且不显示。
是数字再存储并显示。
采用INT 21H的8号功能(与1号功能不同的是不带自动回显)。
对于每个字符的输入可编子程序:KEKIN PROCAGAIN: MOV AH,8 ;不带自动回显INT 21H ;AL=字符ASCIICMP AL,30H ;’0’JB AGAIN ;小于30H不是数字键,重输CMP AL,39H ;’9’JA AGAIN ;大于39H不是数字键,重输PUSH AX ;保存输入的字符MOV DL,AL ;INT 21H改变ALMOV AH,2INT 21H ;是数字键,显示POP AX ;恢复输入的字符RETKEYIN ENDP④调用KEYIN输入第1个4位十进制数X1:MOV SI,OFFSET X1MOV CX,4 ;4位数字输入4次NEXT1: CALL KEYIN ;输入的字符在AL中AND AL,0FH ;保留低4位,ASCII变为数字MOV [SI],AL ;注意为非压缩型BCD码INC SI;指向下一个存放地址LOOP NEXT1 ;4位数字未输完,继续注意:以上输入内容是后输入的占高地址存放。
例如,1234,先输入1,占低地址,后输入的4占高低址。
按这样存放,就不是低位数据占低地址,高位数据占地址!⑤ 两个加数X1、X2与和X3在内存中的存储为:X1、X2和X3均非压缩型BCD加的过程应从个位开始:⑥ 加法程序如下:MOV SI ,(OFFSET X1)+3 ;X1的个位地址 MOV DI ,(OFFSET X2)+3 ;X2的个位地址X1 X2 DATA 数据段 高X3 低 高 低 高 低MOV BX,(OFFSET X3)+4 ;和的个位地址MOV CX,4 ;共需加4位OR CX,CX ;?PLUS:MOV AL,[SI]ADC AL,[DI]AAA ;十进制调整MOV [BX],AL ;存和DEC SIDEC DIDEC BXLOOP PLUS ;低4位相加第5次相加时MOV AL,0ADC AL,0 ;要进位位CFMOV [BX],AL ;存和⑦显示相加结果时应从X3的高位(低地址)开始MOV BX,OFFSET X3 ;和的最高位地址MOV CX,5 ;和共有5位NEXT2:MOV DL,[BX] ;取BCD码0 ~ 9 ADD DL,30H ;变成ASCII码MOV AH,2INT 21H ;显示INC BXLOOP NEXT2⑧程序流程图程序结构堆栈段数据段X1X2X3码段MAINKEYIN。
产生随机数并运算
课程设计任务书学生姓名:庞瀚文专业班级:电气1203 指导教师:李道远工作单位:自动化学院题目:随机数小程序初始条件:利用随机数产生两个8位16进制数,显示它们加法或减法表达式及其运算结果。
如果有进位,显示“Carry”的提示信息,如果被减数小于减数,显示“Borrow”的提示信息。
按Q退出程序。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录1 设计任务 (2)2任务分析 (2)2.1 程序功能说明 (2)2.2 程序要点说明 (2)3功能及程序设计 (3)3.1主程序流程图 (3)3.2程序说明 (4)3.3 子程序功能说明 (4)3.3.1 RAND子程序说明 (4)3.3.2 CHG子程序说明 (4)3.3.3 程序退出判断语句说明........ 错误!未定义书签。
4调试结果及分析 .. (6)5心得体会 (7)6参考文献 (8)附录 (9)1随机数小程序1.设计任务利用随机数产生两个8位16进制数,显示它们加法或减法表达式及其运算结果。
如果有进位,显示“Carry”的提示信息,如果被减数小于减数,显示“Borrow”的提示信息。
按Q退出程序。
2.任务分析2.1 程序功能说明本程序需在DOS下运行。
程序开始运行,程序完成初始化,输出提示信息。
程序产生随机数1,随机数1转化为16进制ASC码并显示。
程序产生随机数2,随机数2转化为16进制ASC码并显示。
此时选择运算方式,输入“+”执行加法运算,输入“-”则执行减法运算。
随机数1和随机数2完成已选择的运算方式,显示运算结果。
微机原理及应用第四章汇编语言程序设计基础
画流程图:以图示形式表示解决具体问题的思路和方法
编制源程序:精心挑选合适的指令和操作数的寻址方式
用注释行说明程序,便于阅读、调试和修改。
调试程序:
汇编
执行
Y
源程序--→机器程序--→分析结果正确--→调试程序完成
N
修改
4
• 起止框 • 处理框 • 判断框
• 连线
流程图图例
开始
结束
XX+1 Y Y-1
31H
取Data1和Data2
0000H
A, Data1 A, Data2
Y
不相等?
STEP1 ;两数不等,转STEP1
N
F0
;两数相等,F0置位
设置标志F0
Y
异号?
ACC.7, TEST;两数异号,转TEST A, Data2 ;两数同号,恢复Data1 结束
N
Y
Data1小?
Y
Data1正?
A, Data2 ;比较 STEP3 ; Data1小,转STEP3 BIG, Data1 ; Data1大
CJNE A, #0AH, $+3
clr c subb A,#30h
JNC ADD_37;若大于等于0AH,则加37Hcjne A,#10,$+3
ADD_30:ADD A, #30H;若小于0AH,则加30H
jc A, HEXASC1 ;A<10转移
MOV R2, A ;保存结果
RET
;子程序返回
subb A,#07h ASCHEX1: ret
3
2、 程序设计步骤
分析课题→确定算法和数据结构→确定操作步骤→画流程 图→编制源程序→调试程序
微机原理与接口技术实用教程4-PPT精品文档
2019/3/8
>>微机原理<<
7
3. 宏指令语句的结构 [宏名] 宏操作助记符 [操作数][;注释] 说明: (1)宏名即宏指令名,是一标识符,宏名后面不能有“:” (2)宏操作助记符共有8个,分别是MACRO、ENDM、 EXITM、LOCAL、REPT、IRPC、IRP、PURGE。 (3) 其余同指示性语句。
第四章
汇编语言程序设计
本章要点
汇编语言的基本语法规则
汇编语言常用的伪指令和DOS功能调用
顺序、分支、循环和子程序设计基本方法
ቤተ መጻሕፍቲ ባይዱ
2019/3/8
>>微机原理<<
2
汇编语言的基本概念 一、汇编语言与机器语言 1、机器语言:是计算机能够识别﹑直接执行的语言,这种形式也叫 目标代码(机器码),全由0﹑1组成。(高级语言编的源程序在执行 时也必须全翻译成机器语言) 2、汇编语言:用机器语言指令的助记符来编写程序的语言称汇编语言 (阅读理解方便,为程序员提供了完全控制目标代码的手段)。 3、源程序:用各种语言编写的程序本身。 4、汇编程序与编译程序: 汇编语言源程序---》汇编---》目标代码 高级语言源程序---》编译---》目标代码 5、汇编语言包含:指令 让微处理器执行操作的指令 伪指令 告诉汇编程序如何汇编的指令
2019/3/8
>>微机原理<<
5
4.1.2
语句类型与结构
1.指令性语句的结构 [标号:][前缀] 指令助记符 [操作数][;注释]
(1)方括号表示的成分可以选用或缺省。 (2)标号是后面紧跟“:”的一个标识符,标号代表该行指令在存 储器中的首地址,标号可作为转移指令和调用指令的一个操作数。 (3)前缀如重复前缀、总线封锁前缀等。 (4)操作数可以是一个、两个或没有,由指令类型决定,若有两 个操作数,前面为目的操作数,后面为源操作数,中间用逗号隔开。 (5)注释是以“;”开始的字符串,不影响程序的汇编与执行,仅 用于增加源程序的可读性。
微机原理 陈继红 王春明版课件
4.2
伪指令
掌握:
伪指令的格式及实现的操作
伪指令的应用
伪指令
由汇编程序执行的“指令系统”。伪指令没有 对应的机器指令,它不是由8086/8088CPU来执 行,而是由MASM-86识别,并完成相应的功能。 用于定义变量、分配存储区、定义逻辑段、指
示程序开始和结束等
伪指令语句格式
这是一个任选字段。标号名 后面不能用冒号“:”,这是 这是伪指令语句不可省略的主 本字段是否需要,需要几 它与指令语句的突出区别。不 要成分。伪指令种类很多,如定 个,需要什么样的操作数 同的伪指令,标号名可以是常 义数据伪指令DB,DW,DD;段定 等都由伪指令字段中伪指 这是一个任选字段, 量名、变量名、过程名、结构 义伪指令SEGMENT;定义过程 令来确定。操作数可以是 它必须以分号为开 名、记录名等。它们可以作为 伪指令PROC等。它们是伪指令语 一个常数、字符串、常量 始,它的作用与指 伪指令语句和指令语句的操作 句要求汇编程序完成的具体操作 名、变量名、标号、一些 , 令语句的注释字段 数,这时,标号名就表示一个 命令。 专用的符号等。 相同。 常量或存储器地址。
等于200
等于400
属性运算符
属性运算符PTR
用于指定其后存储器操作数的类型
格式:(类型) PTR(符号名)
例1:MOV BYTE PTR[BX],12H 例2:已知内存变量D1是字节属性,要把它 的两个字节内容送到AX中。 MOV AX, WORD PTR D1
其它运算符
方括号: [ ] 方括号中内容为操作数的偏移地址 段重设符 段寄存器名:[ ] 用于修改默认的段基地址 例: MOV AX,[BX] MOV AX,ES:[BX]
微机原理第04章4子程序
mov ah,9
;;宏定义体
lea dx,message
int 21h
endm
…
dispmsg string ;宏调用(宏指令)
…
1 mov ah,9
;宏展开
1 lea dx,string
1 int 21h
第4章:宏与比子程序的比较
宏
较
子程序
仅是源程序级的简化: 宏调用在汇编时进行 程序语句的展开,不 需要返回;不减小目 标程序,执行速度没 有改变
第4章:例4.16 显示以“0” 结尾字符串的嵌套子程序
msg
;数据段 db 'Well, I made it !',0 ;代码段(主程序) mov si,offset msg ;主程序提供显示字符串 call dpstri ;调用子程序
第4章:例4.16 子程序
;子程序dpstri:显示DS:SI指向的字符串(以0结尾)
第4章:4.6 子程序设计
把功能相对独立的程序段单独编写和调 试,作为一个相对独立的模块供程序使 用,就形成子程序
子程序可以实现源程序的模块化,可简 化源程序结构,可以提高编程效率
主程序(调用程序)需要利用CALL指令 调用子程序(被调用程序)
子程序需要利用RET指令返回主程序
第4章:4.6.1 过程定义和 子程序编写
dpstri proc
push ax
dps1: mov dl,[si] ;取显示字符
inc si
cmp dl,0
;是结尾,则显示结束
jz dps2
call dpchar ;调用字符显示子程序
jmp dps1
dps2: pop ax ret
dpstri endp
备课笔记10B(4章)
《微机原理与应用》备课笔记B(第四章)第11次上课内容.第一部分指令观察1、算术运算指令观察——zlgc1,zlgc22、逻辑运算指令观察——zlgc33、条件转移指令观察------zlgc4第二部分第四章汇编语言程序设计4-1 概述、一、什么是汇编语言汇编语言是用指令助记符、符号地址、标号等书写程序的语言。
特点:易读、易写、易记,。
但是不如高级语言具有很好的通用性和可移植性,也不能像机器语言直接运行。
二、汇编语言上机过程4-2汇编语言基本语法4-2-1 汇编语言源程序实例——zlgc2,exmp1例1:把内存中从STRING 开始的字符串传送到BLOCK 开始的内存区域去.DAT1 SEGMENT STRING DB 'ABCD1234' NUMEQU $-STRING DAT1 ENDS DAT2 SEGMENT BLOCK DB 50 DUP(?) DAT2 ENDS COD SEGMENTASSUME CS:COD,DS:DAT1,ES:DAT2 START: MOVAX,DAT1MOV DS,AX MOV AX,SEG BLOCK MOV ES,AX MOV CX,NUMMOV SI, OFFSET STRING MOV DI,OFFSET BLOCK LP: MOV AL,[SI] MOV ES:[DI],AL INC SI INCDILOOP LP MOV AH,4CH INT 21HCOD ENDS ENDSTART汇编语言语句种类——指令语句、伪指令语句、宏指令语句1) 指令语句——由指令系统中有的指令构成。
它指示CPU执行某种操作。
指令语句指令语句伪指令语句该指令语句汇编后将产生目标代码。
2)伪指令语句——属于说明性语句。
仅在汇编过程中起汇编管理和说明的作用,不产生目标代码。
实验二指令观察1、算术运算指令观察——zlgc1,zlgc22、逻辑运算指令观察——zlgc33、条件转移指令观察------zlgc44-2-2伪指令语句格式:名字伪操作指令[参数表] [;注释]1、段定义伪指令1)段定义伪指令格式:段名SEGMENT……段名ENDS用于定义源程序的各个逻辑段。
微机原理4[1].3算术运算指令59页PPT
16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
微机原理4[1].3算术运算指令
•
6、黄金时代是在我们的前面,而不在 我们的 后面。
8、你可以很有个性,但某些时候请收 敛。
•
9、只为成功找方法,不为失败找借口 (蹩脚 的工人 总是说 工具不 好)。
•
10、只要下定决心克服恐惧,便几乎 能克服 任何恐 惧。因 为,请 记住, 除了在 脑海中 ,恐惧 无处藏 身。-- 戴尔. 卡耐基 。
END
微机原理第04章4子程序
9 可编辑ppt
;子程序dpchar:
11 可编辑ppt
第4章:含数据区的子程序
;子程序HTOASC:十六进制数转换为ASCII码
HTOASC proc
push bx
mov bx,offset ASCII
and al,0fh
xlat CS:ASCII;换码:AL←CS:[BX+AL]
pop bx ret ;数据区
执行CALL指令调用子程序 ⑶子程序中对堆栈的压入和弹出操作要成对使用,
保持堆栈的平衡 ⑷子程序开始应该保护使用到的寄存器内容,子
程序返回前相应进行恢复 ⑸子程序应安排在代码段的主程序之外,最好放
在主程序执行终止后的位置(返回DOS后、汇 编结束END伪指令前),也可以放在主程序开 始执行之前的位置
int 21h
pop bx
;逆序出栈,恢复寄存器
pop ax
ret
;子程序返回
dpchar endp
;过程结束
6 可编辑ppt
第4章:例4.15源程序
Sse segment stack Db 30 dup(?)
本程序不需要数据段
Sse ends
Code segment
Assume cs:code,ss:sse
可选的参数指定过程的调用属性。没有指定过 程属性,则采用默认属性
NEAR属性(段内近调用)的过程只能被相同 代码段的其他程序调用
微机原理课程设计_进制转换程序设计
课程设计任务书学生姓名:易杨专业班级:电信 0802 指导教师:曾刚工作单位:信息工程学院题目:进制转换程序设计初始条件:具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、程序实现二进制、十进制、十六进制之间的转换2、在命令提示下输入相应进制数,回车后进行转换3、输入错误时应声响报警并拒绝输入4、程序采用汇编语言在PC机上完成5、完成符合学校要求的设计说明书时间安排:一周,其中2天程序设计,2天程序调试,1天完成课程设计报告书及答辩指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)1原理分析 (1)2程序设计流程 (3)2.1程序流程图 (3)2.2设计思路 (4)3程序设计 (5)3.1堆栈段数据段程序设计 (5)3.2主程序设计 (5)3.3输入二进制程序 (7)3.4输入十进制程序 (8)3.5输入十六进制程序 (8)3.6输出二进制程序 (9)3.7输出十进制程序 (9)3.8输出十六进制程序 (11)3.9回车键确定程序 (11)3.10报警程序 (12)4运行结果 (13)5心得体会 (15)参考文献 (16)摘要日常生活与实际应用中,往往需要计算机处理的信息是多种多样的,如各种进位制的数据,不同语种的文字符号和各种图像信息等。
但在计算机内部采用的是二进制计数制,这种进制表达方法对于人们研究分析是不那么方便的。
本次课程设计将通过所学的微机原理知识理论,用汇编语言编写程序,实现二进制、十进制与十六进制之间的相互转换,并在MF2KP软件上演示。
关键词:汇编程序进制转换MF2KP1 原理分析进位计数制是人们利用符号来计数的方法。
一种进位计数制包含一组数码符号和两个基本因素。
数码是用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。
微机原理课件ch07
Q(C,D)
2021/1/10
ENDM
第21页
过程调用和宏调用的区别
在处理时间上不同。 用宏指令得到的目标代码长,占内存空间大,而
且宏调用的次数越多,所占内存空间越大;用过 程占内存空间小,而且不会随调用次数的增加而 增加,但执行时间长。 传递参数的方式不同
2021/1/10
第22页
2021/1/10
PTR运算符
格式: 类型 PTR 表达式
例12:INC WORD PTR [BX]
THIS操作符
格式: THIS 类型(或属性)
例13:FIRST
EQU THIS BYTE
SECOND
DW 100 DUP (?)
2021/1/10
第27页
第19页
子程序调用和宏调用的区别
子程序调用工作方式
主程序
X←A,y←B CALL Q
x←C,y←D CALL Q
子程序Q(x,y) 执行时调用
Q: . . .
RET
2021/1/10
第20页
子程序调用和宏调用的区别
宏调用工作方式
主程序
子程序Q(x,y)
汇编时展开
Q A,B
Q(A,B)
Q C,D Q MACRO x,y
2021/1/10
第10页
伪指令
符号定义语句
等值语句
格式:符号名 EQU 表达式
例1: ⑴ PORT
EQU
⑵ BUFF
EQU
⑶ MEM
EQU
⑷ COUNT
EQU
⑸ ABC
EQU
1234 PORT+58 DS:[BP+20H] CX AAA
等号语句
微机原理7.ppt
▪以最低字节所在的内存地址作为 数据的存储地址。
内存中的字节、字和双字
内存地址
内存单元
…
1003H 0001 0002
1002H 0003 0004
1001H 1010 0110
1000H 1100 1011
…
内存单元
内存地址 … 1003H 1 2 1002H 3 4 1001H A 6 1000H C B
…
3)内存操作
读:将内存单元的内容取入CPU,原
单元内容不改变;
写:CPU将信息放入内存单元,单元
中原内容被覆盖;
… 1003H 1 2 1002H 3 4
…
3. 输入/输出接口
I/O接口,是CPU与外设间的桥梁.
CPU
I/O
接口
外设
完成信号变换、数据缓冲、联络控制等工作 较简单的I/O接口电路与主板一体 较复杂的I/O接口电路制成独立的电路板(接口卡)
数据总线的条数决定一次可最多传送数据
的宽度。
地址总线AB
C 8 根存 P 16储器根
→I/O
接
→口
一输次传送I/8O位 一入 设 备次传送接口16位
输 出 设 备
U 32 根 → 一次传送 32位
64 根 → 一次传送 64位
数据总线DB 控制总线CB
控制总线 CB:传送各种控制信号
有的是CPU发出,如读、写控制信号; 有的是发向CPU,如外设发出的中断申请信号。
微机原理 及 应用
主讲 茹媛
计算机学院 网络与工程系
教材: 《微机原理与接口技术》
吉海彦 机械出版社 ISBN 978-7-111-21547-9 参考书: 《IBM PC 汇编语言程序设计》
微机原理,子程序递归调用的注释
微机原理,子程序递归调用的注释
注释如下:
《微机原理》是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。
要求考生对微机原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086微处理器和指令系统、汇编语言程序设计方法、微机系统的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和解决问题的能力。
1.数和数制(二进制、十进制、十六进制和八进制)及其转换。
2.二进制编码。
3.二进制逻辑运算。
4.二进制算术运算。
5.BCD码。
6.计算机中字符表示。
7.计算机的组成结构。
8.补码、反码、原码之间的转换方法。
递归调用子程序
如果一个子程序直接调用他自己,这种调用称为字节递归调用,如果
一个子程序间接调用自己,这种调用称为间接递归调用
递归调用子程序必须采用寄存器或堆栈传递参数,递归的深度受到堆栈空间的限制
子程序的可重入是指子程序在中断后被重新调用,子程序的重入不同于子程序的递归,冲入是被动行为,而递归是主动行为,重入前的调用和重入调用往往是不相干的,而递归调用这是密切相关
我们把可以重新进入的子程序称为可重入子程序,再设计可重入子程序的时候,必须注意以下几点
【1】不能利用约定的存储单元传递参数
【2】不能使用约定的存储单元保存中间值
可重入函数在以后的设计中会提到,这里只做一般的了解。
微机原理 04-8
4.3 汇编语言程序设计的基本方法
——子程序及过程定义
CODES
SEGMENT ASSUME CS:CODES SP=00F8H BCD-16B PROC FAR AX PUSH BX BX PUSH AX ADD SI,CX IP MOV DX,0 CS BCDL: DEC SI PUSH CX PUSH BX, PUSH AX指 MOV AL,[SI]
4.3 汇编语言程序设计的基本方法
——子程序及过程定义
信息的保护与恢复方法有以下两种: 在子程序中进行
2.在主程序中进行
4.3 汇编语言程序设计的基本方法
——子程序及过程定义
在子程序中对信息进行保护与恢复的方法
子程序名 PROC PUSH AX PUSH BX PUSH CX
;信息的保护
POP CX POP BX POP AX RET 子程序名 ENDP
4.3 汇编语言程序设计的基本方法
——子程序及过程定义 主程序 SUB1 SUB2 SUB3
… …
… …
… …
CALL SUB1
… …
CALL SUB2
CALL SUB3
RET 图4.3.18
RET
RET
4.3 汇编语言程序设计的基本方法
——子程序及过程定义
6.信息的保护与恢复 在子程序设计时,肯定要用到一些寄存 器,而这些寄存器在主程序也用到了。我们 期望这些寄存器的值在子程序调用与返回后 ,保持原来主程序中的值不变,这就需要对 这些寄存器的值进行保护。而保护这些寄存 器值的方法是利用堆栈操作。
…
;信息的恢复
4.3 汇编语言程序设计的基本方法
——子程序及过程定义
在主程序中对信息进行保护与恢复的方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、程序设计步骤 二、源程序的汇编、连接与调试 三、IBM PC 汇编语言程序源程序的完整结构及伪指令 四、顺序结构 五、分支结构
六、循环结构
七、子程序 八、DOS系统功能调用 九、字符串处理 十、宏指令
七、 子程序
1、过程定义
六、 子程序
概念:子程序为功能确定、且独立的程序段。
优点:
1. 可以将任何一段独立的程序归整为一个子程序, 当需要该段程序时,只需调用子程序即可,调 用后会自动返回到调用指令的下一条指令。因 此采用子程序设计时,可以简化程序设计。 2. 从调试程序的角度,由于原本在多处出现的程 序段,缩减为子程序调用指令,使调试程序更 加方便。
六、 子程序
缺点:
采用子程序设计后。由于调用子程序和从子程序 中返回需要执行指令,并且为保护某些寄存器的 内容,需要进行压入堆栈和弹出堆栈的操作,因
4、子程序说明文件
六、 子程序
5、过程的嵌套、递归调用
过程的嵌套
递归调用 当子程序嵌套 时,若某子程序 要调用的子程序 就是其本身,则 称为递归调用。
六、 子程序
例1 子程序设计,编写子程序实现统计 一个字(AX)中“1”的个数。 解:利用移位指令或循环移位指令,每次 对CF位进行检测: 当CF=1时,则总个数加1; 当CF=0时,则总个数不变。 这种操作可以采用有条件转移指令来实现, 也可采用方便的ADC指令实现。子程序如 下:
六、 子程序
例2 编写程序,完成将一组BCD 数转换成16 位二进制数。 (BCD 数转换成16 位二进制数用子程序实现)
BCD 数转换成16 位二进制数的算法步骤为: ①DX=0;(用DX 存放结果) ②取要转换的一组BCD 数中的高位→(AX) ③(DX)=(DX)*10+(AX); ④重复②、③两步,直到BCD 码的所有位都转子程序间的参数传递
入口参数:将主程序给子程序提供的初始数据或 获得初始数据的信息称为子程序的入口参数。 出口参数:子程序返回给主程序的结果称为子程 序的出口参数。 参数传递可用以下3种方法完成 : *利用寄存器 *利用内存单元(变量)传递参数。 *利用堆栈
六、 子程序
CALL FAR PTR TIMER CALL DWORD PTR [SI]
六、 子程序
返回指令
入口 地址
从堆栈中弹出断点地址,返回源程序。
格式: RET RETF
段内返回(近返回)
段间返回(远返回)
断点
近返回:从栈顶弹出两个字节内容送IP, SP内容加2 远返回:从栈顶弹出四个字节内容分别 送CS和IP,SP内容加4
此会使程序执行速度受到一定的影响。
六、 子程序
实现: 子程序调用是通过自动修改(IP)和/或(CS) 的内容实现的。 为了确保子程序调用后能够返回到调用指令之后, CALL指令会自动保存返回地址(IP和/或CS),
而RET指令会自动返回到CALL指令的下一条指令。
六、 子程序
2、调用和返回指令 CALL指令: 段内调用 段内直接调用 段内间接调用 段间直接调用 段间间接调用
段间调用
(cs)
(IP)
六、 子程序
段内调用
子过程与原调用程序在同一代码 段,在调用之前会自动把断点的 偏移地址压栈(调用指令的下一 条指令的地址)
断点
入口 地址
CALL TIMER
CALL WORD PTR [SI]
六、 子程序
段间调用
子过程与原调用程序不在同一代码段,在调用 之前会自动把断点的段基地址和偏移地址压栈。 先将断点的CS压栈,再压入IP。
六、 子程序
COUNTER1 PROC NEAR PUSH AX MOV CX,16 XOR BL,BL COU1: SHR AX,1 ADC BL,0 LOOP COU1 POP AX RET COUNTER1 ENDP
六、 子程序
例1 子程序应用。利用上例设计的子程序,统 计字型变量VAR1中1的个数。 解:在数据段中定义变量VAR1和CounterVar1: VAR1 DW 1234H CounterVar1 DB ? 则可在代码段中编写程序: MOV AX, VAR1 CALL COUNTER1 MOV CounterVar1,BL 执行后,结果单元CounterVar1的值为5,说明 1234H中包含有5个“1”。