[计算机软件及应用]第六章 微型计算机的程序设计
中职教育-微型计算机基本原理与应用(北大第三版)课件:第6章 汇编语言程序设计及应用04.ppt
POP BP
RET
(3) 汇编子程序的返回值
当C程序调用汇编子程序后,如果汇编子程序有返回值给 C程序,则是通过寄存器AX和DX进行传递的。若返回值 是16位二进制值,则放于寄存器AX中;若返回值为32位 值,则高16位在寄存器DX中,低16位在寄存器AX中。
The number of numberal one is 3
3. 汇编语言程序调用C函数
在汇编语言程序中调用C函数也应注意两种编程语言间的 接口及相应的编程约定,主要包括以下几个方面:
① 在汇编语言程序中,对所调用的C函数必须用EXTRN伪 指令声明。若所调用的C函数为NEAR型,则EXTRN语句 可以放在代码段中;若为FAR型,则要放在所有段之外。
例6.11 在C程序中内嵌汇编语句显示一个$字符,设C程序名 为display.c。
C程序如下:
/* The program name:display.c */ main()
{
asm mov ah , 2 ; /﹡2号DOS功能调用:显示输出 */
asm mov dl , ‘$’ ;
asm int 21h
;
printf (“﹨n This is a program with inline assembly statement”); return 0 ; }
例6.12 从键盘接收并显示1~9中的一个字符,忽略其他所有 字符。设C程序名为inout.c。
C程序如下: /* The program name: inout.c */ main ( ) { asm { mov ah , 7; /* 7号DOS功能调用:键盘输入(无回显) */ int 21h cmp al , ‘0’
微型计算机技术及应用
操作系统的主要功能包括进程管理、 内存管理、文件管理和设备管理。
程序设计语言
程序设计语言定义
程序设计语言是用于编写计算机程序的一组符号和规 则,它能够精确地描述计算机程序的逻辑行为。
程序设计语言分类
程序设计语言可以分为机器语言、汇编语言、高级语 言等。
常见程序设计语言
常见的微型计算机程序设计语言有C、C、Java、 Python等。
工控机
主要用于工业控制和自动 化系统,具有较高的稳定 性和可靠性,价格较高。
微型计算机的应用领域
家庭娱乐
用于游戏、音乐、 视频播放和网络浏 览等。
工业控制
用于自动化生产线 控制、监测和故障 诊断等。
办公自动化
用于文字处理、电 子表格、邮件和网 页浏览等。
科学计算
用于数值计算、数 据处理和统计分析 等。
随着微型计算机应用的广泛,数据安全和隐私保 护成为重要挑战,需要加强技术研究和法律监管。
3
新兴市场与发展空间
随着物联网、云计算等新兴市场的快速发展,微 型计算机技术将拥有更广阔的发展空间和机遇。
THANKS FOR WATCHING
感谢您的观看
常见的总线与接口技术标准包括PCIe、USB、 HDMI等,这些标准在不同的应用场景下有各 自的优势和局限性。
03
微型计算机软件技术
操作系统
操作系统定义
操作系统是控制和管理计算机硬件与 软件资源、合理组织计算机工作流程 以及为用户提供方便的使用接口的计 算机程序集合。
操作系统功能
常见操作系统
常见的微型计算机操作系统有 Windows、macOS、Linux等。
网络技术
网络协议
包括TCP/IP协议族、HTTP协议、SMTP协议等, 用于实现计算机之间的通信和信息交换。
微型计算机控制技术课后习题答案
第一章计算机控制系统概述习题及参考答案1.计算机控制系统的控制过程是怎样的计算机控制系统的控制过程可归纳为以下三个步骤:(1)实时数据采集:对被控量的瞬时值进展检测,并输入给计算机。
(2)实时控制决策:对采集到的表征被控参数的状态量进展分析,并按已定的控制规律,决定下一步的控制过程。
(3)实时控制输出:根据决策,适时地对执行机构发出控制信号,完成控制任务。
2.实时、在线方式和离线方式的含义是什么?(1)实时:所谓“实时〞,是指信号的输入、计算和输出都是在一定时间范围内完成的,即计算机对输入信息以足够快的速度进展处理,并在一定的时间内作出反响并进展控制,超出了这个时间就会失去控制时机,控制也就失去了意义。
(2)“在线〞方式:在计算机控制系统中,如果生产过程设备直接及计算机连接,生产过程直承受计算机的控制,就叫做“联机〞方式或“在线〞方式。
(3)“离线〞方式:假设生产过程设备不直接及计算机相连接,其工作不直承受计算机的控制,而是通过中间记录介质,靠人进展联系并作相应操作的方式,那么叫做“脱机〞方式或“离线〞方式。
3.微型计算机控制系统的硬件由哪几局部组成?各局部的作用是什么?由四局部组成。
(1)主机:这是微型计算机控制系统的核心,通过接口它可以向系统的各个局部发出各种命令,同时对被控对象的被控参数进展实时检测及处理。
主机的主要功能是控制整个生产过程,按控制规律进展各种控制运算(如调节规律运算、最优化计算等)和操作,根据运算结果作出控制决策;对生产过程进展监视,使之处于最优工作状态;对事故进展预测和报警;编制生产技术报告,打印制表等等。
(2)输入输出通道:这是微机和生产对象之间进展信息交换的桥梁和纽带。
过程输入通道把生产对象的被控参数转换成微机可以接收的数字代码。
过程输出通道把微机输出的控制命令和数据,转换成可以对生产对象进展控制的信号。
过程输入输出通道包括模拟量输入输出通道和数字量输入输出通道。
(3)外部设备:这是实现微机和外界进展信息交换的设备,简称外设,包括人机联系设备(操作台)、输入输出设备(磁盘驱动器、键盘、打印机、显示终端等)和外存贮器(磁盘)。
微机原理与接口技术-六章-程序设计
汇编语言程序设计步骤:
开始
处理
处理
结束
处理
Y
N
6.2 简单程序(1)
例:将内存单元10050H的内容拆成两段,每段4位,分别存 入10051H(低4位)和10052H(高4位)单元。即 10051H和10052H单元的高4位都为0。
⑥静态检查程序是否有错
6.3 分支程序(1)
N 条件满足? 语句系列1 语句系列2 N
例:编一个程序。从外设71H取一个数M,判断其值是否在10和 20之间,即10≤M<20。如果M≥20,则送0FFH给外设73H; 如果M<10,则送00H给外设73H;如果10≤M<20, 则送88H给外设73H。
子程序中对堆栈的压入和弹出操作要成对使用,保持堆栈的平衡。
子程序要利用过程定义伪指令声明。
一、子程序编写注意事项
二、举例
例:
code segment main proc far ...... call subr1 ...... ret main endp subr1 proc near ...... ret subr1 endp code ends
DP5 PROC NEAR MOV AL,CL SAL AL,1 SAL AL,1 ADD AL,CL MOV CL,AL RET DP5 ENDP MY ENDS END START AL=? BL=? CL=?
汇编语言中,子程序要用一对过程伪指令PROC和ENDP声明,格式如下: 过程名 PROC [NEAR/FAR] …… ;过程体 …… 过程名 ENDP NEAR属性(段内近调用) FAR属性(段间远调用)
提供必要的子程序说明信息。
处理好子程序与主程序间的参数传递问题。
中职教育-微型计算机基本原理与应用(北大第三版)课件:第6章 汇编语言程序设计及应用02.ppt
鼠标通常采用7位数据位、1位停止位、无奇偶校验的异步 格式传送数据,传送速率一般为1200/2400bps。Microsoft 规定的鼠标数据为三字节,具体格式如表6-3 所示。
表6-3 鼠标数据格式
D7
D6
D5
D4
D3
D2
D1
D0
第一字节 ×
1
LB
RB
Y7
Y6
X7
X6
第二字节 ×
0
X5
X4
X3
图6.6 扬声器驱动系统
由图6.6可以看出,定时器/计数器8253产生一定频率的脉 冲信号,经由驱动和放大电路,就可以使扬声器发声。并 行输入/输出接口芯片8255用来控制8253是否能够工作以 及工作时所产生的脉冲信号是否送到扬声器。
8255 端口B的端口号为61H,其数据寄存器的最低两位就 是用来实现这种控制功能的。因此,通过交替地设置这两 位的值就可以实现打开扬声器和关闭扬声器,就可以控制 发声的时间,即控制音长。
;返回DOS
INT 21H
CODE ENDS
END START
例 6.5 判断是否有键按下,若没有键按下,则继续执行程 序,否则退出。
START: …是否有键按下
INT 16H
JE START
;没有键按下继续执行程序
MOV AH,4CH ;否则,退出
INT 21H
6.2.5 鼠标器编程
INT 16H
MOV [SI] , AL
;将接收的字符保存在缓冲区中
INC SI
;修改地址指针
LOOP LP
MOV BYTE PTR [SI], ‘$’ ;将’$’作为字符串结尾
LEA DX , W
最新微型计算机原理与应用习题集及答案
微型计算机原理与应用习题集及答案微型计算机原理与应用习题集目录第1章概述 (1)第2章计算机中的数制与编码 (2)第3章微处理器及其结构 (4)第4章 8086/8088CPU指令系统 (9)第5章汇编语言程序设计 (17)第6章存储器系统 (27)第7章中断技术 (31)第8章输入/输出接口技术 (37)第9章串行通信技术及其接口芯片 (42)模拟试题(一) (44)参考答案 (48)模拟试题(二) (49)参考答案 (52)模拟试题(三) (53)参考答案 (56)河南理工大学 2006--2007 学年第 1 学期 (58)参考答案 (61)近年来某高校硕士研究生入学试题 (63)参考答案 (66)近年某高校研究生入学考试试题 (70)参考答案 (74)近年某高校攻读硕士学位研究生试题 (75)参考答案 (77)第1章概述一、填空题1.电子计算机主要由运算器、控制器、存储器、输入设备和输出设备等五部分组成。
2.运算器和控制器集成在一块芯片上,被称作CPU。
3.总线按其功能可分数据总线、地址总线和控制总线三种不同类型的总线。
4.计算机系统与外部设备之间相互连接的总线称为系统总线(或通信总线);用于连接微型机系统内各插件板的总线称为系统内总线仅供学习与交流,如有侵权请联系网站删除谢谢78(板级总线);CPU内部连接各寄存器及运算部件之间的总线称为内部总线。
5.迄今为止电子计算机所共同遵循的工作原理是程序存储和程序控制的工作原理。
这种原理又称为冯·诺依曼型原理。
二、简答题1.简述微处理器、微计算机及微计算机系统三个术语的内涵。
答:微处理器是微计算机系统的核心硬件部件,它本身具有运算能力和控制功能,对系统的性能起决定性的影响。
微处理器一般也称为CPU;微计算机是由微处理器、存储器、I/O接口电路及系统总线组成的裸机系统。
微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。
微机原理微型计算机的程序设计
2024/9/30
43
例6.2
将内存(10050)单元旳内容拆成两段,每段4位,并将它 们分别 存入内存(10051)和(10052)单元。即(10050) 单 元 中 旳 低 4 位 放 入 ( 10051 ) 单 元 中 旳 低 4 位 , 而 (10050)单元中旳高4位放入(10052)单元中旳低4位。
INT 21H
2024/9/30
42
作业8.17 编写求输入算式’加数1+加数2’旳和并送显。
(加数及其和均为4位(即指压缩)BCD数,P262)
分析:要求先有屏幕显示输出‘加数1+加 数2:’,然后从键盘输入两个4个字节旳 BCD数,加完后送显。
用到旳变量:W1和W2因为从键盘输入,均 不拟定是几位十进制,故需拟定其最大位 数不超出要用
2024/9/30
12
MOV AX, W1
;AX=0809H,W2为0607H
ADD AL, BYTE PTR W2 ;AL=10H, CF=0,AF=1
AAA ; 属于第一种情况,故
; AL为(AL+06H)&0FH=10H+06H )&0FH
;
=16H&0FH=06H=AL;
;AH加1且CF置CF=1,所以AH=08H+1=09H,则AX=0906H
2024/9/30
34
2024/9/30
35
2024/9/30
36
2024/9/30
37
2024/9/30
38
作业8.4 编写求两个4位非压缩BCD数之和,
将和送显示屏显示旳程序。(P261)
分析:两加数各要4个字节单元,可觉得DD 类型;考虑到进位,和要5个字节单元,另 外,输出到显示器旳结束符号’$’需要一 个单元存放,故共需6个字节。 所以,数据段定义为:
微型计算机原理与汇编语言程序设计第二版ppt课件完整版
78
第3章
79
第3章
3.3.3 8086微处理器最小/最大工作方式
1.最小工作方式 8086的33引脚接+5V,系统处于最小工作方式。 系统中只有8086一个微处理器。 2.最大工作方式 把8086的33引脚接地,系统处于最大工作方式。 包含有两个或多个微处理器。其中有一个主处理器8086,其他处理器称协处理器。
4
第1章
发展经历了6代: 第一代:4位和8 位低档微处理器 第二代:8位中高档微处理器 第三代:16位微处理器 第四代:32位微处理器 第五代:32位高档微处理器 第六代:64位微处理器
5
第1章
1.1.3 微型计算机的应用 1. 科学计算 2. 数据处理 3. 计算机辅助技术 4. 过程检测与控制 5. 人工智能 6. 计算机网络应用
14
15
第1章
1.4.2 微型计算机的常用软件 ——计算机软件包括系统运行所需的各 种程序、数据、文件有关资料,分系统软 件和应用软件。 系统软件支持应用软件的开发与运行, 如操作系统和程序设计语言。 应用软件为用户解决某种应用问题。 软件系统组成结构如图1-9所示。
16
第1章
17
第1章
1.4.3 软硬件之间的相互关系 1. 硬件和软件相互依存 2. 硬件和软件无严格界线 3. 硬件和软件协同发展 4. 固件 5. 软件的兼容性
52
第2章
本章内容结束
谢 谢!
53
第3章
典型微处理器及其体系结构
第06章(简化)讲解
➢ 问题:该程序能否简化?如何简化?
; DS=1000H ; 被加数指针SI=50H ; 加数指针DI=52H ; 和的指针BX=54H ; 清CF ; 清AX ; 取一个字到AX ; AX←AX+[DI]+CF ; 存一个字到[BX] ; 暂停
8/41
➢ 简化的程序:
MOV AX,1000H
BX 54H 55H
DI A1H BDH
+ AX 12H 34H = AX B3H F1H
BX B3H F1H
设SI=3412H DI=BDA1H
内存地址 存储内容 50H 12H 51H 34H 52H A1H 53H BDH 54H 55H
50H 12H 51H 34H 52H A1H 53H BDH 54H B3H 55H F1H
第6章 微型计算机的程序设计
6.1 程序设计步骤 6.2 简单程序 6.3 分支程序 6.4 循环程序 6.5 子程序 6.6 查表程序 习题
2020/8/18
1/41
6.1 程序设计步骤
➢ 汇编语言程序设计步骤: (1)分析问题:已知条件、要解决的问题、功能/性能要求等。 (2)建立数学模型:把问题数学化、公式化,便于计算机处理。 (3)确定算法:简单、速度快、精度高、代码量小、编程容易。 (4)绘制程序流程图:用箭头、框图、菱形图等表示程序结构。 (5)内存空间分配:为程序或数据分配内存空间。 (6)编制程序与静态检查:程序结构层次简单、清楚、易懂。 (7)程序调试:利用调试软件DEBUG进行调试。
MOV DS,AX
; DS=1000H
MOV AX,[50H] ; 取被加数到AX
ADD AX,[52H] ; AX←被加数+加数
微机程序设计
微机程序设计微机程序设计是一门结合计算机科学和工程学原理,专注于微处理器和微控制器编程的学科。
它涉及到硬件与软件的交互,以及如何通过编写程序来控制微机执行特定的任务。
以下是对微机程序设计的一些基础介绍和关键概念。
微机程序设计概述微机程序设计通常包括以下几个步骤:需求分析、系统设计、编码、测试、调试和维护。
这些步骤构成了软件开发生命周期的主体,对于微机程序设计同样适用。
硬件基础在开始程序设计之前,了解微机的硬件基础是至关重要的。
微机通常由以下部分组成:- 中央处理单元(CPU):执行指令和处理数据。
- 内存:存储程序和数据。
- 输入/输出(I/O)接口:允许微机与外部设备通信。
- 存储设备:如硬盘、固态硬盘等,用于长期存储数据。
编程语言微机程序设计可以使用多种编程语言,包括但不限于:- 汇编语言:与机器指令直接对应的低级语言。
- C语言:广泛用于系统编程和嵌入式系统。
- C++:支持面向对象编程,适用于需要复杂数据处理的场合。
- Python:高级语言,易于学习,常用于快速开发和原型设计。
开发环境微机程序设计通常需要特定的开发环境,这些环境提供了编译器、调试器和其他工具,以帮助开发者编写、测试和优化代码。
常见的开发环境包括:- Keil:适用于ARM Cortex微控制器的开发。
- MPLAB X IDE:适用于Microchip微控制器的开发。
- Arduino IDE:适用于Arduino平台的开发。
编程范式微机程序设计中常用的编程范式包括:- 过程式编程:以过程为中心,强调程序的执行流程。
- 面向对象编程:以对象为中心,强调数据和方法的封装。
- 事件驱动编程:以事件为中心,强调对用户输入或系统事件的响应。
接口与通信微机程序设计中,接口和通信是关键部分。
开发者需要了解如何通过各种接口(如SPI、I2C、UART等)与外部设备进行通信。
实时操作系统(RTOS)在需要多任务处理和实时响应的系统中,实时操作系统可以提供必要的调度和管理功能。
微型计算机原理与汇编语言程序设计-第6章 汇编语言程序设计
汇编语言程序设计基本步骤
顺序程序结构及设计方法
分支程序结构及设计方法
循环程序结构及设计方法
子程序设计的基本过程及设计方法
1
第 6章
6.1 汇编语言程序设计基本步骤和典型结构
6.1.1 汇编语言程序设计的基本步骤
1.分析问题,抽象出描述问题的数学模型
33
第 6章 【例6.20】设计一个子程序,完成统计一组字数 据中的正数和0的个数。
34
35
第 6章
本章小结
顺序结构按照语句实现的先后次序执行
一系列的操作。
分支结构一般由条件转移指令构成。
循环结构由初始化、循环处理、循环参
数修改和循环控制部分4部分组成。
子程序可缩短程序目标代码长度,节省 存储空间。
句要执行;第二种情况是只有一个分支有语
句,另一个分支没有任务执行。
12
第 6章
13
第 6章
6.3.2 分支结构程序设计 1.简单双分支程序设计 先明确需要判断的条件是什么; 要用哪一个条件转移语句; 条件成立的分支要完成什么任务,条件 不成立的分支要完成哪些操作; 确定算法后,写出源程序。
36
第 6章
本章内容到此结束
谢 谢!
37
22
23
第 6章
(3)混合控制法 【例6.15】已知在内存中有一字符 串,长度为CN。找出这个字符中的 第一个空格,若找到,将其地址送 到ADDR单元,并将FLAG(字节单 元)置1,否则将FLAG清0。
24
25
第 6章
6.4.2 循环程序的设计 1.单循环程序程序设计
【例6.16】在数据段中以BUF为首地址 的区域中,存放了CN个带符号字节数据。 要求将其中的正数送入PLUS开始的 存储区,负数存入MINUS开始的存储区。
《微机原理及应用》各章习题参考答案
《微机原理及应用》各章习题参考答案第1章微型计算机概论一、填空题1. 微机硬件系统主要由CPU、(存储器)、(总线)、(输入输出接口)和输入输出设备组成。
2. 冯·诺依曼计算机的核心原理是(存储程序原理)3. 完成下列数制的转换1)10100110B=( 166 )D=( A6H )H2)223.25 =( 11011111.01 )B=( DF.4 )H3)1011011.101B=( 5B.A )H=(1001 0001.01100010 0101 )BCD4. 已知[X]补5. 已知A=10101111,B=01010000,则A∧B的结果为( 00000000 ) B=86H,则X的十进制表示形式为( -122 )6. -29H的8位二进制反码是(11010110 )B7.字符4的ASCII码=( 34 )H二、简答题1.冯.诺依曼计算机的结构是怎样的,主要特点有哪些?解:将计算机设计为由运算器、控制器、存储器、输入设备和输出设备等5个部分组成,所有的执行都以运算器为核心,采用存储程序工作原理。
2. 已知X=-1101001B,Y=-1010110B,用补码方法求X-Y=?解:[X-Y]补=[X+(-Y)]补= [X]补+[-Y] [X]补原=11101001B [X]补 [-Y]=10010111B原=01010110B=[-Y] [X-Y]补补= [X]补+[-Y]补X-Y=[[X-Y]=11101101B补]补=10010011=-0010011=-193. 写出下列真值对应的原码和补码的形式:1)X=-1110011B2)X=-713)X=+1001001B解:1)[X]原码=11110011B , [X]补码=10001101B2)[X]原码=11000111B, [X]补码=10111001B3)[X]原码=01001001, [X] 补码=01001001B=?4. 已知X和Y的真值,求[X+Y]补1)X=-1110111B Y=+1011010B2)X=56 Y=-215. 若与门的输入端A、B、C的状态分别为1、0、1,则该与门的输出端状态为?若将这3位信号连接到或门,那么或门的输出又是什么状态?解:由与和或的逻辑关系知,若“与”门的输入端有一位为“0”,则输出为“0”;若“或”门的输入端有一位为“1”,则输出为“1”。
《微型计算机控制技术》于海生第6章
6.2.1 误差自动校准 6.2.2 线性化处理(chǔlǐ)和非线性补偿 6.2.3 标度变换方法 6.2.4 越限报警处理 6.2.5 量化误差来源
6.2.6 A/D、D/A及运算字长的选择
第八页,共五十九页。
数字调零:在测量时,先把多路输入接到所需测量的一组输入电
压测上出进零输行入测时量A,/测D出转这换时器的的输输入出值为为xx10,,然用后x把1减多去路x开0即关为的实输入际接输地入, 电压x。图6-3
除了数字调零外,还可以采用偏移和增益误差的自动校准。
第九页,共五十九页。
1.全自动校准(jiào zhǔn)
自动校准:自动测量基准参数,计算误差模型,获得并存储误差补偿因子。
先把开关接地,测出这时的输入值x0,然后把开关接基准电压VR,
测出输入值x1,并存放x1、x0,在正式(zhèngshì)测量时,如测出的输入
值为x,则这时的V可用下式计算
V
( x x0 x1 x0
) VR
采用这种方法测得的V与放大器的漂移和增益变化无关,与V和R
可采用直接按解析(jiě xī)式来计算。
3.其它标度变换法(非线性场合)
可采用多项式插值法,也可以用线性插值法或查表进行标度变换。
第十八页,共五十九页。
6.2.4 越限报警(bào jǐng)处理
越限报警是工业控制过程常见而又实用(shíyòng)的一种报警形式,它分为
上限报警、下限报警及上下限报警。如果需要判断的报警参数是xn, 该参数的上下限约束值分别是xmax和xmin,则上下限报警的物理意义如
又如: outportw(0x230,0x3435) outportb(0x240,0x26)
微型计算机课程设计-简易计算器
课程设计设计名称: 微型计算机技术及应用——简易计算器学院:信息工程学院课程:微型计算机技术及应用姓名:学号:班级:2014级计算机科学与技术二班目录摘要 (3)一、前言 (4)1.1背景 (4)1.2项目介绍 (4)二、课程设计的目的与任务 (5)2.1设计目的 (5)2.2设计任务 (5)三、设计过程 (5)3.1基础理论 (5)3.1.1DOSBox简介 (5)3.1.2中断 (8)四、设计 (11)4.1总体方案 (11)4.2原理框图 (12)4.3程序代码 (13)五、系统模块详细设计与调试 (24)5.1系统模块详细设计 (24)5.1.1设置屏幕显示方式 (24)5.1.2显示主菜单 (24)5.1.3从键盘接收一个数字 (24)5.1.4接收键入用于计算的数 (25)5.1.5显示结果 (25)5.1.6子程序A2——将数的ASCII码转为二进制数 (25)5.1.7将计算结果的二进制数转换为对应的十进制数ASCII码并输出显示(A3程序段) (27)5.2程序编译、运行与调试 (27)六、设计总结 (29)七、参考文献 (31)摘要本次课程设计是通过使用DOSBox汇编语言编程软件实现的利用汇编语言编写的较为复杂的程序设计。
该课程设计主要是设计一个较为简单的计算器,界面显示要求用户从键盘上分别输入两个随机数,完成四则运算,然后将运算结果显示到屏幕上。
该设计智能实现简单的正整数之间的四则运算,无法对小数进行精确地识别。
而除法运算可以精确到3位小数,减法可以显示出负数的结果。
采用DOS调用(INT 21H)来完成键盘的输入和屏幕的输出。
通过这次的课程设计能够进一步加深对专业知识和理论知识学习的认识和理解。
关键词:DOSBox;微机原理;计算器;汇编语言一、前言1.1背景计算器是现代人发明的可以进行数字运算的电子机器。
现代的电子计算器能进行数学运算的手持电子机器,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱。
第六章 微型计算机的程序设计
MOV BX,3E8H; BX←1000 LP2: MOVCX,176H LP1: PUSHF POPF 延时1ms程序段 LOOP LP1 DEC BX ; BX←BX-1 JNZ LP2 HLT ; 暂停 此程序中内循环是1ms时间,而在外循环中的两条 控制指令DEC和JNZ所对应的时钟节拍分别为2个和 4个,一共只需0.75μs,与1ms比较极短,所以我们 在外循环里忽略不计了
(4) 内存空间分配:被加 数、加数及和在内存的空 间分配
图6.2
(5) 编制的程序如下: MOV AX,1000H MOV DS,AX MOV SI,50H MOV DI,52H MOV BX,54H CLC XOR AX,AX MOV AX,[SI] ADC AX,[DI] MOV [BX],AX HLT
在编写这种两次判断的问题时,应注意其次序, 否则,有可能出现重复或矛盾。例如,上面的 问题,两次判断可以安排成如图6.7所示的4种 流程图形式。 住这些逻辑关系和标志位的意义。
图6.7
6.4 循环程序
循环程序是强制CPU重复执行某一指令系列(程序 段)的一种程序结构形式,凡是要重复执行的程 序段都可以按循环结构设计。循环结构程序简化 了程序清单书写形式,而且减少了占内存空间。 值得注意的是循环程序并不简化程序执行过程, 相反,增加了一些循环控制等环节,总的程序执 行语句和时间会有所增加。 循环程序一般由4部分组成:初始化、循环体、循 环控制和循环结束处理
•程序调试是为了纠正错误。 纠正错误的方法很多,例 如在编辑、汇编、连接或 用调试软件(如DEBUG)调 试时都可以发现错误并设 法修改程序。
图6.1
6.2 简单程序
这种程序的形式最简单,计算机执行程序的方式是“从 头到尾”,逐条执行指令语句,直到程序结束,这 是程序的最基本形式,任何程序都离不开这种形式。 【例6.1】用数据运算指令,对两个16位数做加法运算。 这两个数从地址10050H开始连续存放,低位在小地 址一端,结果放在这两个数之后。 (1)分析题目:它是一个16位数相加的问题。在用加法 指令时,必须要考虑低8位和低8位相加后产生的进 位问题。 (2)根据86系列指令系统,可以直接对累加器AX做字操 作,但在低位相加后,会影响标志寄存器的进位位 CF,所以,要用带进位的加法指令。 (3)绘制程序流程图,如图6.2所示。
计算机软件及应用汇编语言程序设计PPT学习教案
4.段定义伪指令SEGMENT、 ENDS、ASSUME、ORG
伪指令SEGMENT和ENDS总是成对使用的。用这一对 伪指令可以将汇编语言源程序分成几个段,通常分为数据 段、堆栈段和代码段。代码段主要有指令和其他伪指令; 对于数据段和附加段主要有定义数据区的伪指令。
例: 数据段、堆栈段两段程序框架。
第4页/共103页
伪指令语句中的名字可以是变量名、段名、过程名。 与指令语句中的标号不同,不同的伪指令对于是否有名字 有不同的规定。伪指令语句的名字后面通常不跟冒号,这 是它和标号的一个明显区别。
很多情况下伪指令语句中的名字是变量名。变量名代 表存储器中一个数据区的名字。例如,例5.1中的DATA1、 DATA2就是变量名。
STR EQU 64*1024 2.定义存储单元的伪指令DB、DW、DD、DQ、DT
伪指令DB和DW等用来给出程序中所需要的数据、字符串、 地址表。该类伪指令用来为一个数据项分配存储单元,用一 个符号名与这个存储单元相联系,且为这个数据提供一个任 选的初始值。
DB用来规定字节,DW用来规定字,DD用来规定双字,DQ 用来规定4个字,DT用来规定10个字。例如: DATA DB 24H,32H 表示从DATA地址单元开始,连续存入24H,32H,共占用2个字 节的地址。
计算机软件及应用汇编语言程序设计
会计学
1
汇
汇
目 的 程 序
编
语
言
源
程
序
编
汇 编 程
序
第1页/共103页
5.1 汇编语言的语句格式
汇编语言编写的源程序是由许多语句组成的。每条语句
由1~4个部分组成,格式如下:
[名字] 助记符 [操作数] [注释]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HLT
h ;暂停
6
例2:将内存(10050H)单元的内容拆成两段,每
段4位,并将它们分别存入内存(10051H)和 (10052H)单元。即(10050H)单元中的低4位放 入(10051H)的低4位,(10050H)单元中的高4位 放入(10052H)的低4位,而(10051H)和 (10052H)的高4位均为零)。
h
15
h
16
START: IN AL,71
CLC CMP AL,10
JC LP1 CMP AL,20
JC LP2 MOV BL,0FFH LP3: MOV AL, BL OUT 73H,AL
HLT LP1: MOV BL,00
JMP LP3 LP2: MOV BL,88H
JMP LP3
;将71H端口的字节读入AL ;清除CF ;AL-10,结果不返回 ;小于10转LP1 ; AL-20,结果不返回 ; 10AL<20 转LP2 ;将0FFH送入BL寄存器
h
13
(3)根据流程图编制程序如下:
CLC
;清除CF
CMP AX,BX ;AX-BX,结果不返回
JC AA
;CF=1转AA去执行(即AX<BX时转移)
SUB AX,BX ; AX ← AX-BX
MOV DI,2800H ;结果指针DI=2800H
MOV [DI],AX ;结果送到2800H和2801H单元,
10050H 被加数低8位 10053H 加数高8位
10051H 被加数高8位 10054H 和的低8位
10052H 加数低8位 10055H 和的高8位
被加数+加数→AX
AX →(10054H)和(10055H)单元
暂停
图6-2 简单程序流程图
h
5
(双字节相加)
(5)编制的程序如下:
MOV AX,1000H
MOV [SI+2], AL
h
9
三、分支程序
分支程序是利用条件转移指令,使程序执行到某一 指令后,根据条件(即上面运算的情况)是否满足, 来改变程序执行的次序,这类程序使计算机有了判断 作用。一般来说,它经常是先用比较指令或数据操作 及位检测指令等来改变标志寄存器各个标志位。然后 用条件转移指令进行分支。
【例1】求AX累加器和BX寄存器中两个无符号 数之差的绝对值,结果放在内存(2800H)单 元中。
(1)分析题目:此题目中,AX累加器和BX寄
存器中的数是不知道的。对两个不知大小的
数相减并求绝对值,显然应该先解决哪一个
值稍大些,然后再用大数减小数的方法,才
可求得绝对值。
h
12
(2)根据指令系统中的比较指令,编出判断大小的 换件,即可解决问题。下图为该例题的程序流程图。
内存地址 内容 10050H 7AH 10051H 0AH 10052H 07H
h
8
(5)编制的程序如下:
MOV AX, 1000H
MOV DS, AX
MOV SI, 50H
MOV AL, [SI]
AND AL, 0FH
MOV [SI+1],AL
MOV AL, [SI]
MOV CL, 4
SHR AL, 4
(4)绘制程序流程图(见图6检查
(7)程序调试
h
2
h
3
二、简单程序 这种程序的形式最简单,计算机执行程
序的方式是“从头到尾”,逐条执行指令语句, 直到程序结束,这是程序的最基本形式。
例1:用数据运算指令,对两个16位数相加 运算。这两个数从地址10050H开始连续存放, 结果放在这两个数之后。
;将0FFH输出到73H端口 ;暂停
HLT
;暂停
AA:SUB BX,AX ;BX ← BX-AX
MOV DI,2800H
MOV [DI],BX
HLT
h
14
例2:我们要编一个程序。从外设 71H号中一个数 M,判断其值是否在 10和 20之间,即10M<20。 如果M20,则送0FFH给外设73H; 如果M<10,则送00H给外设73H; 如果 10 M<20,则送88H给外设73H。 (1) 分析题目;根据题意,我们可以看出这是一个需 要两次判断M大小的问题。我们可以先判M是否大于 10,再判M是否大于20。 (2) 根据解决问题的思路,我们先画出程序流程图, 如下图所示。从图6中程序流程图来看,两个分支都 要“回归”原程序。 (3) 编制的程序如下:
分支程序执行完后可以立即结束,也可以转到公 共点结束,见图6-4所示。分支程序可以再分支,各分 支程序之间没有对应关系,分支程序只要求在转移指 令中给出目标地址,即可实现程序分支。
h
10
h
11
在编写程序流程时,我们必定会用到棱 形判断框。在编好流程图写助记符程序时,建 议先按上下流程线写。写完上下流程线上的各 框环节后,再写分支部分里的框框。
解:(1)分析题目
(2)确定算法
(3)绘制流程图(见图6-2)
(4)内存空间分配(见表6-1)
h
4
开始
初始化 段地址DS:1000H 被加数指针SI←50H 加数指针 DI ← 52H 和的指针BX ← 54H 清除AX和CF
被加数→AX
表6-1 双字节相加时的内存分配
内存 地址
内容
内存 地址
内容
MOV DS,AX
;DS=1000H
MOV SI,50H
;被加数指针SI=50H
MOV DI,52H
;加数指针DI=52H
MOV BX,54H
;和的指针BX=54H
CLC
;清CF
X0R AX,AX
;清AX
MOV AX,[SI] ;取一个字到AX
ADC AX,[DI] ;AX←AX+[DI]+CF
MOV [BX],AX ;存一个字到[BX]
第六章 微机的程序设计
在了解和熟悉了8086/8088指令系统的 基础上,本章将介绍程序设计的一般过程, 以及几种典型的程序形成的编写方法。
h
1
一、程序设计步骤 程序是计算机命令(语句)的有序集
合,当用计算机求解某些问题时需要编制 程序。汇编语言程序设计步骤如下:
(1)分析问题
(2)建立数学模型
(3)确定算法
解:
(1)分析题目
(2)确定算法
(3)绘制流程图(见图6-3)
(4)内存空间分配
h
7
开始
初始化
用间址方法取数→AL
用逻辑与指令将该数 “与”0FH取得低四位,存入 内存(10051H)单元
再取出原数→AL
逻辑右移得到高4位, 存入内存(10052H)单元
暂停 图6-3 拆字程序流程图
表6-2 拆字程序的内存分配