Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

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

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

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

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

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

7 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

8 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 例 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字节

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

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

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

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

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

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

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

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

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

18 方法:对于整数部分除2取余法,小数部分采用乘2取整法
十进制转换成二进制 方法:对于整数部分除2取余法,小数部分采用乘2取整法 例: D = B 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 基础知识

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

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

21 十六进制数:逢十六进一 借一为十六 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 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 H 1

22 1.3 计算机中数和字符的表示  计算机中正负数的表示 假设机器字长为8位: 假设机器字长为16位:
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 计算机中数和字符的表示  计算机中正负数的表示 假设机器字长为8位: 符号位 数值位 假设机器字长为16位: H.O.Byte L.O.Byte 符号位 = 0 正数 数值位 = 1 负数

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

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

25 n位二进制补码的表数范围: - 2n-1 ≤ N ≤ 2n-1-1
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 n位二进制补码的表数范围: - 2n-1 ≤ N ≤ 2n-1-1 十进制 二进制 十六进制 十进制 十六进制 n= n=16 F FFF E FFE … … FF FFFF FE FFFE … … 无符号整数的表数范围: 0 ≤ N  ≤ 2n-1

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

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

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

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

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

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

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

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


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

Similar presentations


Ads by Google