汇编语言绪论,第一章(第一版) 基 础 知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
助记符 (mnemonics)
数据:5,16,0,555,…
符号名: MAX,count,line或 RESULT
9
汇编语言的特点:
面向机器的低级语言,通常是为特定的计算机或计算机系列
专门设计的。 保持了机器语言的优点,具有直接和简捷的特点。 可有效地访问、控制计算机的各种硬件设备,如磁盘、存储 器、CPU、I/O端口等。 目标代码简短,占用内存少,执行速度快,是高效的程序设 计语言。 经常与高级语言配合使用,应用十分广泛。
2
课程学习目标与要求:
了解以Intel系列微处理器为基础的PC机的基本结构 (编程结构)
掌握Intel系列微处理器(以8086CPU作为典型机)的 指令系统及寻址方式 掌握汇编语言程序设计基本方法与技巧 学会使用DOS和BIOS功能调用及高级汇编语言技术
熟练掌握汇编语言程序的上机调试和运行的方法
22=4 24=16 210=1024 216=65536 220=1048576
1K= 210=1024 (Kilo) 1M=1024K= 220 (Mega) 1G=1024M= 230 (Giga)
17
预
备
知
识
1个二进制位:bit(比特) 4个二进制位:half byte(半字节) 8个二进制位:byte(字节); 1 byte=8 bit 2个字节:word(字); 1 word=2 byte=16 bit 4个字节: double word (双字)
汇编语言:是一种符号语言,与机器语言一一对应;使用助记
符表示相应的操作,并遵循一定的语法规则。与机 器语言有类似的优、缺点,但比机器语言更易于为 人们所理解。
高级语言:面向人的语言,有多种类型。
优点:便于阅读,易学易用,不涉及硬件,具有通用性。 缺点:目标代码冗长,占用内存多,从而执行时间长,效
率不高,不能对某些硬件进行操作。
3
教学环节:
课堂教学:50学时
自
学:第八章以后的内容;
上机实验:不少于10学时; 要求完成《 IBM-PC汇编语言程序设计实验教程》 中的实验2.1 ~ 实验2.4、 实验3.2和实验3.7, 并写出 实验报告 ;
作
业:每章开始学习时布置作业,自主掌握作业进度;
成绩考核:作业、实验:30%;期末考试:70%
2. 数制之间的转换
二进制 十进制
按权展开,相加求和 1011B = 1 23+0 22+1 21+1 20=11D 降幂法 例: 27D = ? B 27 11 3 3 - 16 - 8 - 4 - 2 1 1 0 1 ∴ 27D = 11011B
1 - 0 1
28
3. 运算(算术运算和逻辑运算)
算术运算
二进制 加法规则 乘法规则 0+0=0 00=0 0+1=1 01=0 1+0=1 10=0 1+1=0 (进位1) 11=1
05C3H + 3D25H 42E8H 3D25H - 05C3H 3762H
29
十六进制
逻辑运算(按位bit操作)
余数 15 - 1 十六进制的权值 F 权值的倍数
∴ 399D = 18FH
26
除法
例: 399D = ? H 24 16 399 32 79 64 15 1 16 24 16 a1 = 8 0 16 1 0 a 2= 1
a0 =
∴ 399D=18FH
27
二进制
十六进制
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
符表示相应的操作,并遵循一定的语法规则。与机 器语言有类似的优、缺点,但比机器语言更易于为 人们所理解。
举例
高级语言:面向人的语言,有多种类型。
优点:便于阅读,易学易用,不涉及硬件,具有通用性。 缺点:目标代码冗长,占用内存多,从而执行时间长,效
率不高,不能对某些硬件进行操作。
举例
6
设有二个数据分别用8位二进制位表示,存放在当前数据区的1 号、2号单元,计算两数和,并存入AL寄存器。机器语言程序 清单如下: 1010 0000
反码表示法:正数的反码同原码,负数的反码数值位与 原码相反 例:n=8bit
[+5]反码 = 0 000,0101 = 05H [ -5]反码 = 1 111,1010 = FAH [+0]反码 = 0 000,0000 = 00H [ -0]反码 = 1 111,1111 = FFH 0的表示不唯一
IBM‐PC汇编语言程序设计
IBM PC Assembly Language and Programming
武汉理工大学计算机学院
1
教材:
《 IBM-PC汇编语言程序设计》, 第一版, 沈美明 温冬婵编 著, 清华大学出版社
实验教材:
《 IBM-PC汇编语言程序设计实验教程》 ,沈美明等, 清华大学出版社
“与”运算(AND ) A B AB 0 0 0 0 1 0 1 0 0 1 1 1 “ 非 ” 运 算 ( NOT) A 0 1 A 1 0 “或”运算(OR) A 0 0 1 1 B 0 1 0 1 AB 0 1 1 1
“异或”运算(XOR ) A 0 0 1 1 B 0 1 0 1 AB 0 1 1 0
10
汇编语言的应用:
70%以上的系统软件是用汇编语言编写的。
某些快速处理、位处理、访问硬件设备等高效程序是用 汇编语言编写的。 某些高级绘图程序、视频游戏程序是用汇编语言编写的。
11
机器语言:依赖于机器的低级语言,书写格式为二进制代码。
优点:执行速度快,效率高。 缺点:表达的意义不直观,编写、阅读、调试较困难。
参考教材:
[1]温冬婵 , 沈美明编:《 IBM-PC汇编语言程序设计例题习 题集》 ,清华大学出版社 [2]王元珍等编:《IBM-PC宏汇编语言程序设计》, 华中理工大学出版社 [3] Peter Abel:"IBM PC Assembly Language and Programming" Fourth edition,Prentice Hall,Inc. USA 1998
12
下面是两个小例子,例1是用高级语言C++编写的,例2是用 汇编语言编写的。它们完成相同的功能,即把a、b的内容相加 赋给c,并在屏幕上显示出来。 例1
#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; 编译后的目标文件 }
0000 0000
0000 0001 1000 1010 0010 0110 0000 0000
1号单元数据取到AL寄存器
2号单元数据取到AH寄存器
0000 0010
0000 0000
1110 0000
1111 0100
AL的内容与AH的内容相加,结果存入AL中
停机
7
机器语言编写的程序有以下缺点: 1) 机器语言难记,程序难编、易错、调试困难。
数值位
设机器字长 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 n=16
符号位 数值位
32
常用表示法 —— 原码 反码 原码表示法:符号 + 绝对值 例:n=8bit
补码
[+3]原码 = 0 000,0011 = 03H [ -3]原码 = 1 000,0011 = 83H [+0]原码 = 0 000,0000 = 00H [ -0]原码 = 1 000,0000 = 80H 0的表示不唯一
19
20
21
数
ቤተ መጻሕፍቲ ባይዱ
制
基 数
数
码
二进制 Binary
八进制 Octal (Q) 十进制 Decimal 十六进制 Hexadecimal
2
8 10 16
0,1
0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7,8,9 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F
22
23
达到3.59KB
13
例2 data
segment a db ? b db ? c db ? String db 'c=$' data ends code segment main proc far assume cs:code, ds:data start: mov ax,data mov ds,ax 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 int 21h mov dl,0ah int 21h mov dl,0dh int 21h mov ah,4ch int 21h 汇编后的目标文 main endp 件只有205个字节 code ends end start
30
例:X=00FFH Y=5555H,求Z=XY=?
X= 0000 0000 1111 1111 B Y= 0101 0101 0101 0101 B Z= 0101 0101 1010 1010 B Z=55AAH 例:设有逻辑值X,求 X 1 1 X -0 -1 1 0 X = X 1
31
4. 数和字符的表示
数(机器数)的表示: 计算机中的数用二进制表示,数的符号也用二进制 表示。 机器字长:指参与运算的数的基本位数, 标志着计算精度。一般是字节的整数倍(8位、16 位、32位等)。
设机器字长 n=8
符号位=0 表示正数
7 6 5 4 3 2 1 0
符号位=1 表示负数
符号位
14
汇编语言的学习方法建议:
1.要了解计算机的硬件逻辑,注意研究汇编语言的
语法细节,
2.课上注意听.课下及时完成作业。
3. 多上机,学会熟练使用DEBUG.EXE调试工具.
15
第一章
要点:
基 础 知 识
数制 数制之间的转换 运算 数和字符的表示
作业: 1.3~1.6
16
预
备
知
识 28=256
18
1. 数
制
十进制:基数为10,逢十进一 12.3 = 1×101 + 2 ×100 + 3 ×10-1 二进制:基数为2,逢二进一 11012 = 1 ×23 + 1 ×22 + 1 ×20 = 1310 十六进制:基数为16,逢十六进一 89616 = 8 ×162 + 9 ×161 + 6×160=219810 八进制:基数为8,逢八进一 1078= + 1 ×82 + 0 ×81 + 7 ×80=7110
33
模数与补数
以时钟对时为例,将6时拨到3时. 逆时针旋转记为 - ,有6-3=3
12
顺时针旋转记为 + .则6+9=12+3=3
当模数为12时:6-3=6+9
9
6
3
同理,6-4=6+8,6-1=6+11,…
-3和9,-4和8,-1和11互为补数,两个补数绝对值的 和数等于模数. 当模数一定时,减去一个数可以用加上它的补数代 替(即将减法转换为加法),补数在计算机中的表示称 之为补码.计算机中数的补码均以2n为模.
2) 机器语言通用性差。
尽管这样,最初的计算机都是用机器语言编程,其优点如下: 1) 计算机能直接认识,执行。 2) 算法刻画细致 3) 程序紧凑,占内空间少,执行速度快。
4) 能充分发挥计算机的硬件功能。
返回
8
MOV AL,DATA1 MOV AH,DATA2 ADD AL,AH HLT
;取数1 ;取数2 ;求和 ;停机
4
计算机语言发展简史
机器语言 高级语言
FORTRAN BASIC COBOL PASCAL C/C++ JAVA …...
汇编语言
5
机器语言:依赖于机器的低级语言,书写格式为二进制代码。
优点:执行速度快,效率高。 缺点:表达的意义不直观,编写、阅读、调试较困难。
汇编语言:是一种符号语言,与机器语言一一对应;使用助记
二进制的权值
24
除法 例: 27D = ? B 2 27 2 13 2 6 2 3 2 1 0
a0=1 a1=1 a2=0 a3=1 a4=1
∴ 27D = 11011B
25
十六进制
十进制
BF3CH = 11163 + 15162 + 3161 + 12160 降幂法
例: 399D = ? H 余数 399 143 - 256 - 16 1 8