IBM—PC汇编语言 程序设计(第二版) 主讲 李敬兆 Ch1 基础知识.

Slides:



Advertisements
Similar presentations
第三章 数据在计算机中的表示 进位计数制及相互转换 进位计数制及相互转换 3.2 数据在计算机中的表示 数据在计算机中的表示.
Advertisements

数制 (1) 基数:在一种数制中,只能使用一组固定的数字符号 来表示数目的大小,其使用数字符号的个数,就称为该数 制的基数。其规则是 “ 逢 b 进一 ” ,则称为 b 进制的基数。 十进制( Decimal )的基数是 10 ,,它有 10 个数字符号, 即 0 , 1 , 2 , 3 , 4 ,
三级偏软考点. 第一章必考点 1. 计算机的进位数制 (1) 计算机中所有数据是二进制 0,1 表示 (2) 在现实生活中人们普遍使用十进制 如何把十进制转换成计算机所识别的二 进制?整数是除 2 取余法,小数是乘 2 取 整法.
会计从业资格 初级会计电算化. 考试题型: 本章内容在考试中以单选题、多选题、判断题 形式出现; 重点理解计算机软件的概念,掌握计算机软件 的构成,了解常用软件的内容。 计算机软件.
Foundations of Computer Application
第一章 现代电子技术基础 知识 §1-1 模拟信号与数字信号 学习要点: 模拟信号、数字信号的描述 数制间的相互转换.
微型计算机中数的编码和字符的表示 1 数的表示与转换方法 2 带符号数的表示方法 3 定点数与浮点数 4 计算机中的编码.
第1章 计算机基础知识 1.4 二进制数的运算及其加法电路 1.4.1二进制数据算术运算规则 (1) 加法运算规则
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
微机原理与接口技术 大家好!.
第10章 DOS功能调用与BIOS中断调用.
第 四 章 信息的加工与表达(下).
计算机基础知识 丁家营镇九年制学校 徐中先.
计算机应用基础教程 第一章 计算机基础知识 实践训练中心.
单片机原理及接口技术.
本周实验安排 实验内容:(P231)人名排序的例子。
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
数字电路与逻辑设计 任课教师:刘毅 博士/副教授 单位:西安电子科技大学ISN国家重点实验室
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
清华大学计算机系列教材 IBM—PC汇编语言 程序设计(第二版).
汇编语言程序设计 Assembly Language Programming
資料表示法與數字系統 主講:顧叔財 資料來源: 計算機概論.
计算机文化基础 第一章 计算机的基础知识.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
单片机原理与应用 Principles and Application of Microcontroller
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
第2章 计算机的基础知识.
Assembly Language Programming
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
单片机原理与应用 Principles and Application of Microcontroller
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
本节内容 字符编码 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
C语言程序设计 主讲教师:陆幼利.
第1章 数制与编码.
第9章 位 运 算.
第1章 数制与编码 1.1 数制 1.2 编码.
数字电路.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
第1章 数制与编码 1.1 数制 1.2 编码.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
汇编语言程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
组合逻辑电路 ——中规模组合逻辑集成电路.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
第十二章 位运算.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
数据表示 第 2 讲.
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
大数据搜索挖掘实验室 第五章 子程序设计 张华平 副教授 博士 Website: 大数据搜索挖掘实验室
第一章 微型计算机中的数据类型.
微机原理与接口技术 西安邮电大学计算机学院 董 梁.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
单片机原理及接口技术 前修课程:数模电、微机原理.
第9章 位 运 算.
第一章 绪 论 1.1 概 述 1.2 数制与代码.
单片机原理及其应用 主讲教师 赵琳.
数字电子技术 项目1 简单加法器电路设计与测试
Presentation transcript:

IBM—PC汇编语言 程序设计(第二版) 主讲 李敬兆 Ch1 基础知识

计算机语言的发展 机器语言 高级语言 汇编语言 FORTRAN BASIC COBOL PASCAL C/C++ JAVA ... Ch1 基础知识

计算机能够直接识别的数据是由二进制数0和1组成的代码。机器指令就是用二进制代码组成的指令,一条机器指令控制计算机完成一个基本操作。 机器语言 计算机能够直接识别的数据是由二进制数0和1组成的代码。机器指令就是用二进制代码组成的指令,一条机器指令控制计算机完成一个基本操作。 用机器语言编写的程序是计算机惟一能够直接识别并执行的程序,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序,所以,机器语言程序被称为目标程序。 Ch1 基础知识

汇编语言 用汇编语言编写的程序称为汇编源程序。 为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用变量代替操作数的存放地址等,这样就形成了汇编语言。所以汇编语言是一种用符号书写的、基本操作与机器指令相对应的、并遵循一定语法规则的计算机语言。 用汇编语言编写的程序称为汇编源程序。 汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行。这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。 Ch1 基础知识

高级语言 汇编语言虽然较机器语言直观,但仍然烦琐难懂。于是人们研制出了高级程序设计语言。高级程序设计语言接近于人类自然语言的语法习惯,与计算机硬件无关,易被用户掌握和使用。 目前广泛应用的高级语言有多种,如BASIC、FORTRAN、PASCAL、C、C++等等。 Ch1 基础知识

 经常与高级语言配合使用,应用十分广泛。 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 汇编语言的特点 面向机器的低级语言,通常是为特定的计算 机或计算机系列专门设计的。 保持了机器语言的优点,具有直接和简捷 的特点。 可有效地访问、控制计算机的各种硬件设备, 如磁盘、存储器、CPU、I/O端口等。 目标代码简短,占用内存少,执行速度快, 是高效的程序设计语言。  经常与高级语言配合使用,应用十分广泛。

int main(int argc, char* argv[]) { int a,b,c; a=1; b=2; c=a+b; 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 编程实现 c =a+b,并在屏幕上显示出结果。 #include "stdafx.h" #include "stdio.h" int main(int argc, char* argv[]) { int a,b,c; a=1; b=2; c=a+b; printf(“c=%d\n",c); return 0; } 例1 编译后的目标文件达到3.59KB

安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 例 2. C = a + b 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 例 2. C = a + b mov a,1 mov b,2 mov al,a add al,b mov c,al lea dx,string mov ah,09 int 21h add c,30h mov dl,c mov ah,2 mov dl,0ah mov dl,0dh int 21h ret main endp code ends end start data segment a db ? b db ? c db ? string db 'c=$' data ends code segment main proc far assume cs:code, ds:data, es:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov es,ax 汇编后的目标文件只有208字节

建议 ●充分注意“汇编”课实践性强的特点, ●多读程序,多写程序,多上机调试程序, ●熟悉PC机的编程结构, 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 建议 ●充分注意“汇编”课实践性强的特点, ●多读程序,多写程序,多上机调试程序, ●熟悉PC机的编程结构, ●掌握汇编语言及其程序设计的基本概 念、方法和技巧。

安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 第1章 基 础 知 识  数制  数制之间的转换  运算  数和字符的表示

预 备 知 识 存储容量 1K = 1024B = 210 (Kilo) 1M = 1024K = 220 (Mega) 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 预 备 知 识 存储容量 1K = 1024B = 210 (Kilo) 1M = 1024K = 220 (Mega) 1G = 1024M = 230 (Giga) 1个二进制位:bit (比特) 8个二进制位:Byte (字节) 1Byte = 8bit 2个字节: Word (字) 1Word = 2Byte = 16bit

1. 1 数 制与转换 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 1.1.1 数 制 数 制 基 数 数 码 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 1. 1 数 制与转换 1.1.1 数 制 数 制 基 数 数 码 二进制 Binary 2 0, 1 八进制 Octal 8 0, 1, 2, 3, 4, 5, 6, 7 十进制 Decimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 十六进制 Hexadecimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 二进制: 基数为2,逢二进一 11012 = 1×2 3 + 1×2 2 + 1×2 0 = 1310 十六进制:基数为16,逢十六进一 1001, 0001, 1000, 0111 9 1 8 7 = 9 ×16 3 + 1 ×16 2 + 8 ×16 1 + 7 ×16 0

ri是各位对应的权 r 是基数 任何进制的数都可用如下方法表示: N = ± Ki * ri 其中:Ki 是任一个数码; n i=-m Ch1 基础知识

1.1.2 数制之间的转换 二进制 十六进制 十进制 二进制 十进制 十六进制 降幂法 除法 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 1.1.2 数制之间的转换 二进制 十六进制 十进制 二进制 十进制 十六进制 降幂法 除法

 二进制 十六进制 A 1 9 C 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 0011 0101 1011 1111 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》  二进制 十六进制 0011 0101 1011 1111     3 5 B F ∴ 0011,0101,1011,1111B = 35BFH A 1 9 C 1010 0001 1001 1100 ∴ A19CH = 1010,0001,1001,1100B

十六进制和二进制的相互转换 方法:对于二进制整数,只要从右到左每4位组成一组,不足4位最左边补0,即可得到相应的十六进制。对于二进制小数,只要从左到右每4位组成一组,不足4位最右边补0,即可得到相应的十六进制。 0 111 1101. 0101 11 0 0     7 D 5 C ∴ (1111101.0101111)2 = (7D.5C)16 如果将十六进制转成二进制数,只要每一位十六进制数用四位二进制数表示即可。 补0 补0 Ch1 基础知识

 二进制 十进制 二进制 十进制 1011B = 23+21+20=11D 二进制 十进制 降幂法 除法 例: 27D = ? B 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》  二进制 十进制 二进制 十进制 1011B = 23+21+20=11D 二进制 十进制 降幂法 除法 例: 27D = ? B 27 11 3 3 1 - - - - 2n 16 8 4 2 1 1 1 0 1 1 ∴ 27D = 11011B

方法:对于整数部分除2取余法,小数部分采用乘2取整法 十进制转换成二进制 方法:对于整数部分除2取余法,小数部分采用乘2取整法 例:117.8125D = 1110101.1101B 2 117 2 58 … … 1 2 29 … … 0 2 14 … … 1 2 7 … … 0 2 3 … … 1 2 1 … … 1 0 … … 1 0.8125 × 2 1.625 … … 1 × 2 1.25 … … 1 × 2 0.5 … … 0 ×2 1.0 … … 1 Ch1 基础知识

 十六进制 十进制 BF3CH = 11163 +15162 +3161 +12160 = 48956D 降幂法 除法 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》  十六进制 十进制 BF3CH = 11163 +15162 +3161 +12160 = 48956D 降幂法 除法 例:399D = ? H 399 143 15 399/16→24/16→1/16→ 0 - - - ↓ ↓ ↓ 16n 256 16 1 F 8 1    1 8 F ∴ 399D = 18FH

1.2 运算(算术运算) 二进制数:逢二进一 借一为二 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 加法规则 乘法规则 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 1.2 运算(算术运算) 二进制数:逢二进一 借一为二 加法规则 乘法规则 0 + 0 = 0 0  0 = 0 0 + 1 = 1 0  1 = 0 1 + 0 = 1 1  0 = 0 1 + 1 = 0 (进位1) 1  1 = 1

十六进制数:逢十六进一 借一为十六 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 0 5 C 3 H 3 D 2 5 H 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 十六进制数:逢十六进一 借一为十六 -1 0 5 C 3 H 3 D 2 5 H 4 2 E 8 H 3 D 2 5 H 0 5 C 3 H 3 7 6 2 H + - 1

1.3 计算机中数和字符的表示  计算机中正负数的表示 假设机器字长为8位: 假设机器字长为16位: 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 1.3 计算机中数和字符的表示  计算机中正负数的表示 假设机器字长为8位: 7 6 5 4 3 2 1 0 符号位 数值位 假设机器字长为16位: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 H.O.Byte L.O.Byte 符号位 = 0 正数 数值位 = 1 负数

数的常用表示法 —— 原码 反码 补码 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 原码表示法:符号 + 绝对值 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 数的常用表示法 —— 原码 反码 补码 原码表示法:符号 + 绝对值 例:n = 8bit [+3]原码 = 0 000,0011 = 03H [- 3]原码 = 1 000,0011 = 83H [+0]原码 = 0 000,0000 = 00H [- 0]原码 = 1 000,0000 = 80H  0 的表示不惟一 反码表示法:正数的反码同原码,负数的反码数值位与原码相反 [+5]反码 = 0 000,0101 = 05H [- 5]反码 = 1 111,1010 = FAH [+0]反码 = 0 000,0000 = 00H [- 0]反码 = 1 111,1111 = FFH  0 的表示不惟一

补码(Two’s Complement)表示法: 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 补码(Two’s Complement)表示法: 正数的补码: 同原码 负数的补码:(1)写出与该负数相对应的正数的补码 (2)按位求反 (3)末位加一 例: 机器字长8位,[- 46]补码 = ? [46]补码 = 0 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 = D2H 机器字长16位,[- 46]补码 = FFD2H [+0]补码 = 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 = [- 0]补码  0 的表示惟一 按位求反 末位加一

n位二进制补码的表数范围: - 2n-1 ≤ N ≤ 2n-1-1 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 n位二进制补码的表数范围: - 2n-1 ≤ N ≤ 2n-1-1 十进制 二进制 十六进制 十进制 十六进制 n=8 n=16 +127 0111 1111 7F +32767 7FFF +126 0111 1110 7E +32766 7FFE ... ... … … ... +2 0000 0010 02 +2 0002 +1 0000 0001 01 +1 0001 0 0000 0000 00 0 0000 -1 1111 1111 FF -1 FFFF -2 1111 1110 FE -2 FFFE ... ... … … ... -126 1000 0010 82 -32766 8002 -127 1000 0001 81 -32767 8001 -128 1000 0000 80 -32768 8000 无符号整数的表数范围: 0 ≤ N  ≤ 2n-1

例: 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 补码的加法和减法: 加法规则:[X+Y]补码 = [X]补码 + [Y]补码 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 补码的加法和减法: 求补运算  :对一个二进制数按位求反、末位加一 求补 求补 [X]补码  [-X]补码  [X]补码 加法规则:[X+Y]补码 = [X]补码 + [Y]补码 减法规则:[X-Y]补码 = [X]补码 + [-Y]补码 补码减法可转换为补码加法 例: 64 (-46) 18 0100 0000 1101 0010 0001 0010 + +

进位: 由于运算结果超出了位数,最高有效位向前的进位,这一位自然丢失,一般不表示结果的对错。 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 进位和溢出 进位: 由于运算结果超出了位数,最高有效位向前的进位,这一位自然丢失,一般不表示结果的对错。 溢出:表示结果超出了字长允许表示的范围, 一般会造成结果出错。 例: (-64) 11000000 127 01111111 + 64 01000000 + 1 00000001 0 1 00000000 128 10000000 进位 溢出

 字符的表示 ASCII码: 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 ‘a’ 61H ‘1’ 31H 换行 0AH 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》  字符的表示 ASCII码: 用一个字节来表示一个字符,低7位为字符的ASCII值,最高位一般用作校验位。 例: ‘A’ 41H ‘a’ 61H ‘1’ 31H 换行 0AH 回车 0DH 空格 20H

BCD码 BCD(Binary-Coded Decimal)码又称为“二—十进制编码”,专门解决用二进制数表示十进数的问题。最常用的是8421编码,其方法是用4位二进制数表示1位十进制数,自左至右每一位对应的位权是8、4、2、1。 Ch1 基础知识

(1)压缩BCD码格式(Packed BCD Format) 用4个二进制位表示一个十进制位,就是用0000B-1001B来表示十进制数0-9。例如:十进制数4256的压缩BCD码表示为:0100 0010 0101 0110 B (2)非压缩BCD码格式(Unpacked BCD Format) 用8个二进制位表示一个十进制位,其中,高四位无意义,我们一般用xxxx表示,低四位和压缩BCD码相同。 例如:十进制数4256的非压缩BCD码表示为: xxxx0100 xxxx0010 xxxx0101 xxxx0110 B Ch1 基础知识

1.4 逻辑运算(按位操作) 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 “与”运算(AND) “或”运算(OR) 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 1.4 逻辑运算(按位操作) “与”运算(AND) “或”运算(OR) A B AB A B AB 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 “非”运算(NOT) “异或”运算(XOR) A A A B AB 0 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0

例:X=00FFH Y=5555H,求Z=XY= ? X= 0000 0000 1111 1111 B 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 例:X=00FFH Y=5555H,求Z=XY= ? X= 0000 0000 1111 1111 B  Y= 0101 0101 0101 0101 B Z= 0101 0101 1010 1010 B  Z=55AAH

第1章作业 1.3 (1) 、 (3) 1.5 (1) 、 (3) 、 (5) 1.8 Page 14 1.2 (1) 、 (3) 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 第1章作业 Page 14 1.2 (1) 、 (3) 1.3 (1) 、 (3) 1.5 (1) 、 (3) 、 (5) 1.8