Download presentation
Presentation is loading. Please wait.
1
汇编语言程序设计
2
主讲:王建荣 助教: 罗成 Tel:27402104 E_mail: wjr@tju.edu.cn
Ftp:// /wjr/汇编语言/2005 助教: 罗成 E_mail:
3
教材:
4
课程介绍 专业基础课、必修课 计算机组成原理的一个部分 软件开发的一个组成部分 一种低级语言的程序设计 高级语言程序设计的扩展
5
相关课程 先修课 高级语言程序设计 计算机组成原理 后续课 微机接口技术 计算机控制技术
6
计算机语言发展简史 机器语言 汇编语言 高级语言 FORTRAN BASIC COBOL PASCAL C/C++ JAVA …...
7
汇编语言 汇编语言是一种面向机器的低级程序设计语言 汇编语言以助记符形式表示每一条计算机指令 用助记符表示的指令就是汇编语言中的汇编格式指令
助记符(mnemonic)是便于人们记忆、并能描述指令功能和指令操作数的符号 助记符一般就是表明指令功能的英语单词或其缩写 用助记符表示的指令就是汇编语言中的汇编格式指令 汇编格式指令以及使用它们编写程序的规则就形成汇编语言(Assembly Language) 汇编语言源程序以 .ASM为默认的扩展名
8
汇编程序(Assembler) 80x86CPU的汇编程序主要有微软的宏汇编程序MASM。较著名的还有Borland公司的TASM,无实质差别 本课程采用Borland的TASM5.0
9
汇编语言的特点 汇编语言程序与处理器指令系统密切相关 程序员可直接、有效地控制系统硬件资源 形成的可执行文件运行速度快、占用主存容量少
10
汇编语言可操作的系统硬件资源 中央处理单元 存储器(主存储器) 外部设备(接口电路)
11
汇编语言和高级语言(1) 汇编语言与处理器密切相关 高级语言与具体计算机无关 ↘ 汇编语言程序的通用性、可移植性较差
↗ 高级语言程序可以在多种计算机上编译后执行
12
汇编语言和高级语言(2) 汇编语言功能有限、涉及硬件细节 高级语言提供了强大的功能,不必关心琐碎问题
↘ 编写程序比较繁琐,调试起来也比较困难 高级语言提供了强大的功能,不必关心琐碎问题 ↗类似自然语言的语法,易于掌握和应用
13
汇编语言和高级语言(3) 汇编语言本质上就是机器语言 高级语言不针对具体计算机系统 ↗ 可以直接、有效地控制计算机硬件
↗ 易于产生速度快、容量小的高效率目标程序 高级语言不针对具体计算机系统 ↘ 不易直接控制计算机的各种操作 ↘ 目标程序比较庞大、运行速度较慢
14
汇编语言和高级语言(4) 汇编语言的优点: 汇编语言的缺点: 直接控制计算机硬件部件 可以编写在“时间”和“空间”两方面最有效的程序
与处理器密切有关 需要熟悉计算机硬件系统、考虑许多细节 编写繁琐,调试、维护、交流和移植困难
15
汇编语言和高级语言(5) 汇编语言的优点使得它在程序设计中占有重要的位置,是不可被取代的
汇编语言的缺点使得人们主要采用高级语言进行程序开发工作 有时需要采用高级语言和汇编语言混合编程的方法,互相取长补短,更好地解决实际问题
16
汇编语言的应用场合 程序要具有较快的执行时间,或者只能占用较小的存储容量 程序与计算机硬件密切相关,程序要直接、有效地控制硬件
大型软件需要提高性能、优化处理的部分 没有合适的高级语言、或只能采用汇编语言的时候 分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等 70%以上的系统软件是用汇编语言编写的。
17
一个简单的汇编语言源程序举例 分别用C语言和汇编语言编制一程序,实现如下功能:
给定两个整数(<128),将其进行加法运算并在屏幕上显示加法运算结果。
18
一个简单的汇编语言源程序举例 #include "stdafx.h" #include "stdio.h" int main()
{ int a,b,c; a=1; b=2; c=a+b; printf( "c=%d\n",c ); return 0; } 编译后的目标文件达到3.59KB
19
一个简单的汇编语言源程序举例 汇编后的目标文件只有208字节 mov a,1 mov b,2 mov al,a add al,b
mov c,al lea dx,string mov ah,09 int h add c,30h mov dl,c mov ah,2 mov dl,0ah mov dl,0dh 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字节
20
学习汇编语言,你需要 胆量:不要害怕去接触那些计算机的内部工作机制。
知识:了解计算机常用的数制,特别是二进制、十六进制、八进制,以及计算机保存数据的方法。 开放:接受汇编语言与高级语言的差异,而不是去指责它如何的不好读。 经验:要求你拥有任意其他编程语言的一点点编程经验。 头脑。
21
为什么学习汇编 如果你仅仅只是想混口饭吃,找个工作,可能教你成为MFC的高手之类的书对你就足够了。
但是,如果你想做一个很好的软件,不仅能满足你谋一碗饭吃,还能使你扬名,最后你的软件还能成为很多人用,甚至你还想把它作为一个事业去经营,从最低层开始做起,从最基本做起。 ——梁肇新《编程高手箴言》
22
第1章 基础知识 数制 数制之间的转换 运算 数和字符的表示
23
进位记数制 二进制 B(Binary) 八进制 O(Octal) 十进制 D(Decimal) 十六进制 H(Hexadecial)
24
数制之间的转换 二进制数和十进制之间的转换 十六进制数和二进制之间的转换 二进制和十六进制数之间的转换
25
运算 算术运算 逻辑运算
26
运算-逻辑运算 与、或、非、异或 与(AND)
27
运算-逻辑运算 与、或、非、异或 或(OR)
28
运算-逻辑运算 与、或、非、异或 非(NOT)
29
运算-逻辑运算 与、或、非、异或 异或(XOR)
30
运算-逻辑运算 例:X=00FFH,Y=5555H,Z1=X∧Y,Z2=X∨Y,Z3= ,Z4= ,求Z1、Z2、Z3、Z4的值。 解:X = Y = Z1= = 0055H Z2= = 55FFH Z3= = FF00H Z4= = 55AAH
31
计算机中数和字符的表示 计算机中数的表示 原码:符号+绝对值 反码:正数的反码与原码相同,负数的数值位与原码相反
补码:正数的补码与原码相同,负数的补码用2n-|x|来表示
32
计算机中数的表示 补码 (1)写出与该负数相对应的正数的补码 (2)按位求反 (3)末位加一 补码的表数范围
33
补码的加法和减法 补码的加法规则是: [X+Y]补=[X]补+[Y]补 补码的减法规则是: [X-Y]补=[X]补+[-Y]补 无符号整数
34
BCD码及其表示 用4位二进制数表示1位十进制数 常用的BCD码存储格式 组合(压缩)型BCD码(1Byte表示2个BCD码)
BCD 个 位 十 位 非组合(非压缩)型BCD码(1Byte表示1个BCD码) BCD 无意义
35
字符的编码 采用7位编码的ASCII码,用1Byte表示 非打印字符33个(用于控制) 27=128 打印字符95个 BEL(07H) 响铃
DEL(7FH) 删除 CR (0DH) 回车 LF (0AH) 换行
Similar presentations