IBM-PC汇编语言程序设计 毛希平 maping@tsinghua.edu.cn 清华大学计算机系
IBM-PC 汇编语言程序设计 毛 希 平 mxping@tsinghua.edu.cn 清华大学计算机系
学习目标与要求: 了解以 Intel系列微处理器为基础的PC机的基本结构 (编程结构) 掌握 Intel系列微处理器的指令系统及寻址方式 掌握用汇编语言设计、编写、调试和运行程序的方法 学会使用DOS和BOS功能调用及高级汇编语言技术 了解汇编语言与高级语言的交叉编程技术
学习目标与要求: • 了解以 Intel 系列微处理器为基础的PC机的基本结构 (编程结构) • 掌握 Intel 系列微处理器的指令系统及寻址方式 • 掌握用汇编语言设计、编写、调试和运行程序的方法 • 学会使用DOS和BIOS功能调用及高级汇编语言技术 • 了解汇编语言与高级语言的交叉编程技术
教材 《 IBM-PC汇编语言程序设计(第2版)》 参考资料: 《 IBM-PC汇编语言程序设计》 《 IBM-PC汇编语言程序设计实验教程》 K IBM PC Assembly Language and Programming y Peter Abel The Art of Assembly Language>, Randy Hyde http://webster.cs.ucredu
教材: 《 IBM-PC 汇编语言程序设计(第2版)》 参考资料: 《 IBM-PC 汇编语言程序设计 》 《 IBM-PC 汇编语言程序设计实验教程 》 《 IBM PC Assembly Language and Programming 》, Peter Abel “ The Art of Assembly Language ” ,Randy Hyde http://webster.cs.ucr.edu/
教学环节: 课堂教学:48学时 自学:第10、11章 上机实验:第八周开始,不少于24学时 考核:期中考查(开卷)期末考试(开卷) 作业:每周二交 助教:穆飞bufei@mails.tsinghua.edu.cn
教学环节: 课堂教学: 48 学时 自 学: 第10、11章 上机实验: 第八周开始,不少于24学时 考 核: 期中考查(开卷) 期末考试(开卷) 作 业: 每周二交 助 教: 穆飞 mufei@mails.tsinghua.edu.cn
绪 论 机器语 FORTRAN 高级语言m BASIC COBOL PASCAL C/C- 汇编语言) JAVA 计算机语言发展简史
绪 论 计算机语言发展简史 机器语言 汇编语言 高级语言 FORTRAN BASIC COBOL PASCAL C/C++ JAVA …
机器语言:依赖于机器的低级语言,书写格式为二进制代码。 优点:执行速度快,效率高。 缺点:表达的意义不直观,编写、阅读、调试较困难。 汇编语言:是一种符号语言,与机器语言一一对应:;它使用 助记符表示相应的操作,并遵循一定的语法规则。 与机器语言有类似的优、缺点,但比机器语言更 易于为人们所理解 高级语言:面向人的语言,有多种类型 优点:便于阅读,易学易用,不涉及硬件,具有通用性。 缺点:目标代码冗长,占用内存多,从而执行时间长, 效率不高,不能对某些硬件进行操作
机器语言:依赖于机器的低级语言,书写格式为二进制代码。 优点:执行速度快,效率高。 缺点:表达的意义不直观,编写、阅读、调试较困难。 汇编语言:是一种符号语言,与机器语言一一对应;它使用 助记符表示相应的操作,并遵循一定的语法规则。 与机器语言有类似的优、缺点,但比机器语言更 易于为人们所理解。 高级语言:面向人的语言,有多种类型。 优点:便于阅读,易学易用,不涉及硬件,具有通用性。 缺点:目标代码冗长,占用内存多,从而执行时间长, 效率不高,不能对某些硬件进行操作
汇编语言的特点: 面向机器的低级语言,通常是为特定的计算机或计算机 系列专门设计的 保持了机器语言的优点,具有直接和简洁的特点。 ·可有效地访问、控制计算机的各种硬件设备,如磁盘、 存储器、CPU、ⅣO端口等。 目标代码简短,占用内存少,执行速度快,是高效的 程序设计语言。 经常与高级语言配合使用,应用十分广泛
汇编语言的特点: • 面向机器的低级语言,通常是为特定的计算机或计算机 系列专门设计的。 • 保持了机器语言的优点,具有直接和简洁的特点。 • 可有效地访问、控制计算机的各种硬件设备,如磁盘、 存储器、CPU、I/O端口等。 • 目标代码简短,占用内存少,执行速度快,是高效的 程序设计语言。 • 经常与高级语言配合使用,应用十分广泛
汇编语言的应用: ·早期大多数系统软件是用汇编语言编写的 某些快速处理、位处理、访问硬件设备等高效程序是用汇编 语言编写的 某些高级绘图程序、视频游戏程序等是用汇编语言编写的
汇编语言的应用: • 早期大多数系统软件是用汇编语言编写的。 • 某些快速处理、位处理、访问硬件设备等高效程序是用汇编 语言编写的。 • 某些高级绘图程序、视频游戏程序等是用汇编语言编写的
下面是两个小例子,例1是用高级语言VC++编写的, 例是用汇编语言编写的。它们完成湘相同的功能, 即把a、b的内容相加赋给c,并在屏幕上显示出来。 例1 #include " stdafx h #include stdio. h" int main(int argc, char* argVD int a, b, c b c=a+b printf("c=%odn",c) 编译后的目标文件 达到359KB return O
下面是两个小例子,例1是用高级语言VC++编写的, 例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; } 编译后的目标文件 达到 3.59KB
例2 data segment mov a mov b2 mov al b b dd al. b mov C a string db c=S′ ea ax, String data ends mov ah. 09 t 2Th dd c 30h code segment mov dl. c main proc tar mov ah. 2 assume cs code. ds: data. es data nt 2lh start mov dl. Oah int 2h sub ax.ax汇编后的目标文件moa1Oh 只有208字节 int 2h ret mov ax. data main endp moy ds. ax code ends mov es. ax end start
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 ret main endp code ends end start 例2 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字节