清华大学计算机系列教材 IBM—PC汇编语言 程序设计(第二版).

Slides:



Advertisements
Similar presentations
数制 (1) 基数:在一种数制中,只能使用一组固定的数字符号 来表示数目的大小,其使用数字符号的个数,就称为该数 制的基数。其规则是 “ 逢 b 进一 ” ,则称为 b 进制的基数。 十进制( Decimal )的基数是 10 ,,它有 10 个数字符号, 即 0 , 1 , 2 , 3 , 4 ,
Advertisements

《程序设计实践》 孙辉 理工配楼104A
计算机基础 第一章 计算机基础知识 机电系计算机教研室
Assembly Language Programming 湛江师范学院 汇编语言程序设计实验课件 主讲教师:王 晓 晔.
第一章 计算机基础知识 计算机的发展简史 1 计算机软件系统 6 计算机的定义和分类 2 微型计算机的组成 7 计算机的特点和用途 3
微型计算机中数的编码和字符的表示 1 数的表示与转换方法 2 带符号数的表示方法 3 定点数与浮点数 4 计算机中的编码.
第1章 计算机基础知识 1.4 二进制数的运算及其加法电路 1.4.1二进制数据算术运算规则 (1) 加法运算规则
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
计算机体系结构 应用程序 软件 操作系统 编译器 固件 指令集 输入输出 CPU 硬件 内存 (I/O) 集成电路 元件,逻辑门.
微机原理与接口技术 大家好!.
第10章 DOS功能调用与BIOS中断调用.
第二章 數字系統:電腦內部的資料表示法 在第一章中,我們對於電腦有了初步的認識,在深入介紹電腦的各項組成元件之前,首先我們必須先了解另一種不同於人類使用習慣的二進位表示法,由於電腦的半導體、磁性、光學元件適合用來表示二進位,因此二進位表示法非常適合用來設計電腦。
第一章 信息技术与 计算机文化 潍坊医学院 第一章信息技术与计算机文化.
计算机基础知识 丁家营镇九年制学校 徐中先.
《数据库原理及应用》课程介绍 信息工程学院 孙俊国
本周实验安排 实验内容:(P231)人名排序的例子。
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
IBM—PC汇编语言 程序设计(第二版) 主讲 李敬兆 Ch1 基础知识.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第一章 C语言概述.
汇编语言程序设计 Assembly Language Programming
資料表示法與數字系統 主講:顧叔財 資料來源: 計算機概論.
计算机文化基础 第一章 计算机的基础知识.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
第5章 输入输出与接口技术.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
第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交流群 : 联系电话:
任务一:初识计算机 任务二:学习计算机中的信息表示 P /4/7.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
C语言程序设计 主讲教师:陆幼利.
数据密集型计算 张奇.
微机原理与接口技术 西安邮电大学计算机学院 王忠民.
第1章 数制与编码.
第 3 章、組合語言 作者:陳鍾誠 旗標出版社.
第9章 位 运 算.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
汇编语言程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 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汇编语言程序设计的特点;
数据密集型计算理论与实践 张奇.
单片机原理及接口技术 前修课程:数模电、微机原理.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
第9章 位 运 算.
第一章 绪 论 1.1 概 述 1.2 数制与代码.
Presentation transcript:

清华大学计算机系列教材 IBM—PC汇编语言 程序设计(第二版)

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

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

int main(int argc, char* argv[]) { int a,b,c; a=1; b=2; 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 data segment data ends code segment 汇编后的目标文件只有208字节 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 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 汇编后的目标文件只有208字节

系统程序、效率代码、I/O驱动程序 汇编语言的应用 某些快速处理、位处理、访问硬件设备等 高效程序是用汇编语言编写的。 70%以上的系统软件是用汇编语言编写的。 某些快速处理、位处理、访问硬件设备等 高效程序是用汇编语言编写的。 高级绘图程序、视频游戏程序一般是用汇 编语言编写的。

教师建议 目标: ●了解汇编语言的特性及其编程技术, ●建立起“机器”和“程序”、“空间”和 “时间”的概念。 建议: ●充分注意“汇编”课实践性强的特点, ●多读程序,多写程序,多上机调试程序, ●熟悉PC机的编程结构, ●掌握汇编语言及其程序设计的基本概 念、方法和技巧。

参考资料 1.80X86汇编语言程序设计 沈美明 温冬婵 清华大学出版社 2.IBM PC 汇编语言与程序设计 PETER ABEL 编著 沈美明 温冬婵 清华大学出版社 2.IBM PC 汇编语言与程序设计 PETER ABEL 编著 第4版 清华大学出版社.PRENTICE HALL 第5版 人民邮电出版社 3. IBM PC 汇编语言与程序设计例题习题集 温冬婵 沈美明 清华大学出版社

教学日历: 第一周 绪论 数制 数制之间的转换 数和字符的表示 运算 第二周 计算机组织 CPU 存储器 外部设备 寻址方式 第一周 绪论 数制 数制之间的转换 数和字符的表示 运算 第二周 计算机组织 CPU 存储器 外部设备 寻址方式 第三周 指令系统(1) 第四周 指令系统(2) BIOS和DOS调用 第五周 上机过程 完整段定义和简化段定义格式 伪操作 第六周 循环与分支程序设计 子程序结构 第七周 高级汇编语言技术 I/O程序设计 第八周 中断程序设计 复习

第1章 基 础 知 识  数制  数制之间的转换  运算  数和字符的表示

8个二进制位:Byte (字节) 1Byte = 8bit 2个字节: Word (字) 1Word = 2Byte = 16bit 预 备 知 识 存储容量 1K = 1024 = 210 (Kilo) 1M = 1024K = 220 (Mega) 1G = 1024M = 230 (Giga) 1个二进制位:bit (比特) 8个二进制位:Byte (字节) 1Byte = 8bit 2个字节: Word (字) 1Word = 2Byte = 16bit

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

2. 数制之间的转换 二进制 十六进制 十进制 二进制 十进制 十六进制 降幂法 除法

 二进制 十六进制 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

 二进制 十进制 1011B = 23+21+20=11D 降幂法 除法 例: 27D = ? B 27 11 3 3 1  二进制 十进制 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

 十六进制 十进制 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

 算术运算 二进制数:逢二进一 借一为二 3. 运算(算术运算和逻辑运算) 加法规则 乘法规则 0 + 0 = 0 0  0 = 0 3. 运算(算术运算和逻辑运算)  算术运算 二进制数:逢二进一 借一为二 加法规则 乘法规则 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 4 2 E 8 H 3 D 2 5 H 0 5 C 3 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

 逻辑运算(按位操作) “与”运算(AND) “或”运算(OR) A B AB A B AB 0 0 0 0 0 0  逻辑运算(按位操作) “与”运算(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  Y= 0101 0101 0101 0101 B Z= 0101 0101 1010 1010 B  Z=55AAH

4. 数和字符的表示  计算机中正负数的表示 假设机器字长为8位: 符号位 数值位 假设机器字长为16位: 符号位 = 0 正数 数值位 7 6 5 4 3 2 1 0 H.O.Nibble L.O.Nibble 符号位 数值位 假设机器字长为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)表示法: 正数的补码: 同原码 负数的补码:(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=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]补码  [-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码:用一个字节来表示一个字符,低7位  字符的表示 ASCII码:用一个字节来表示一个字符,低7位 为字符的ASCII值,最高位一般用作 校验位。 例: ‘A’ 41H ‘a’ 61H ‘1’ 31H 换行 0AH 回车 0DH 空格 20H

第1章作业 Page 14 1.1~1.8