当前位置:文档之家› 汇编语言——入门

汇编语言——入门

存储类型 有符号字节 有符号字 有符号双字 有符号四字 范围(由低到高) -128 - +127 -32,768 - +32,767 -2,147,483,648 - +2,147,483,647 -9,223,372,036,854,775,808 - +9,223,372,036,854,775,807 2 的幂 -27 到 (27 -1) -215 到 (215 -1) -231 到 (231 -1) -263 到 (263 -1)
参考资料
课程幻灯片 教科书,参考书
1. 沈美明,温冬婵,IBM-PC 汇编语言程序设计(第 2 版) ,清 华大学出版社,2007 2. Kip R. Irvine, Assembly Language for x86 Processors, 6th Ed, Pearson Education, 2011 3. 王爽,汇编语言(第 2 版) ,清华大学出版社,2008
NOT,AND,OR
表达式 ¬X X∧Y X∨Y ¬X∧Y ¬(X∧Y) X∧¬Y | | | | | |
描述 非X X与Y X或Y (非 X)与 Y 非(X 与 Y) X 与(非 Y)
“非”操作
将布尔值反转 “非”操作的真值表和逻辑符号 X F T | | | ¬X T F
“与”操作
数字数据的表示
纯二进制数
可以被直接计算
ASCII 二进制表示
数码字符串: “01010101”
ASCII 十进制表示
数码字符串: “65”
ASCII 十六进制表示
数码字符串: “9C”
布尔运算操作
NOT AND OR 运算符的优先级 真值表
布尔代数
基于逻辑符号的运算,由 George Boole 设计 布尔表达式由基本逻辑操作构成
二进制数转换十六进制数
十六进制数的每一位对应 4 位二进制数 例如:把二进制数 000101101010011110010100 转换为十六 进制数
0001 1 0110 6 1010 A 0111 7 1001 9 0100 4
十六进制数到十进制数的转换
十六进制数的每一位数码乘以相应的 16 的幂: dec = (D3 × 163 ) + (D2 × 162 ) + (D1 × 161 ) + (D0 × 160 ) 其中,D = 十六进制数
1
整数存储的大小
标准存储尺寸;
存储类型 无符号字节 无符号字 无符号双字 无符号四字
范围(由低到高) 0 到 255 0 到 65,535 0 到 4,294,967,295 0 到 18,446,744,073,709,551,615
2 的幂 0 到 (28 -1) 0 到 (216 -1) 0 到 (232 -1) 0 到 (264 -1)
如果存储大小为 20 bits,最大的无符号整数是多少?
数据名称
字节的次方单位
十进制 (SI) 名称 千字节 兆字节 吉字节 太字节 拍字节 艾字节 泽字节 尧字节 缩写 KB MB GB TB PB EB ZB YB 次方 10
3
| | | | | | | | | | |
二进制 (IEC 60027-2) 名称 kibibyte mebibyte gibibyte tebibyte pebibyte exbibyte zebibyte yobibyte 缩写 KiB MiB GiB TiB PiB EiB ZiB YiB 次方 210 220 230 240 250 260 270 280
为多平台编写的业务应用软件(不同操作系统) :
高级语言:一般移植性很好,在不同操作系统上可以重新编译源代码,只需做很小改动。 汇编语言:对于不同平台,大都需要单独重新编码,不同汇编编译器使用不同语法,维护困难。
需要直接访问硬件的嵌入式系统和计算机游戏应用:
高级语言:产生很多可执行代码,但不一定都有很高效率。 汇编语言:理想的工具,执行代码一般都少而且运行速度快。
二进制减法
做减法 A-B,把 B 转换为补码 做加法 A + (-B) 的补码
如何完成下列任务
十六进制整数的补码 带符号二进制数转换为十进制数 带符号十进制数转换为二进制数 带符号十进制数转换为十六进制数 带符号十六进制数转换为十进制数
带符号整数的范围
由于最高一位作为符号的标示位,整数的表示范围就改变 了:
在正确时间释放所选择的武器
比较汇编语言与高级语言
为单一平台编写的业务应用软件(中到大规模) :
高级语言:有正式结构,容易组织和维护代码的大部分内容 汇编语言:有少量正式结构,程序员必须有丰富的各种经验,导致代码维护比较困难。
硬件设备驱动:
高级语言:语言不提供直接访问硬件的机制,即使提供,复杂的变成技巧,也会导致维护困难。 汇编语言:硬件访问直接,简单,当程序不很长,有良好文档时容易维护。
指令集结构在第 2 层
被称为传统机器语言 由第 1 层的数字逻辑执行命令
数字逻辑在第 1 层
CPU,数字逻辑门发送的指令 系统总线 存储 使用双极型晶体管实现
计算机数据的表示
二进制数
二进制数与十进制数的转换
二进制加法 整数存储大小 十六进制整数
十进制数与十六进制数的转换 十六进制数的减法
带符号整数
无符号十进制数转换为二进制数
反复将十进制整数除以 2。余数就是二进制的数位值。 除法 37/2 18/2 9/2 4/2 2/2 1/2 37 = 100101 商 18 9 4 2 1 0 余数 1 0 1 0 0 1
二进制加法
从 LSB 开始,把对应的每对数位相加,如果有进位出现, 也要加上进位值。
2n 20 21 22 23 24 25 26 27 十进制数 1 2 4 8 16 32 64 128 | | | | | | | | | 2n 28 29 210 211 212 213 214 215 十进制数 256 512 1024 2048 4096 8192 16384 32768
二进制数转换为十进制数
,余数是
十六进制数减法
当需要借位时,加一个十进制数 16 到当前的数码值上:
问题:如果 var1 的地址是 00400020H,紧接在 var1 后的下 一个变量的地址是 0040006AH。 var1 共占多少字节?
带符号整数
最高的 bit 是数字的符号。 1 = 负数,0 = 正数
如果 16 进制整数最高数位的值 > 7,这个整数值就是负数, 例如:8AH,C5H,A2H,9DH
二进制数的减法
字符的存储
二进制数
二进制的数码 digit 包括 0 和 1
1 = true 0 = false
MSB - most significant bit LSB - least significant bit Bit 的编号
二进制数
二进制的数码不是 0 就是 1 每位都表示 2 的某次幂
每个二进制数都是若干个 2 的幂的和
十六进制数 1234H 等于 (1×163 )+(2×162 )+(3×161 )+(4×160 ),或十进制数 4,660D 十六进制数 3BA4H 等于 (3×163 )+(11×162 )+(10×161 )+(4×160 ),或十进制数 15,268D
16 的幂
表中的数据可以用来计算 8 位十六进制数的大小: 16n 160 161 162 163 十进制数 1 16 256 4,096 | | | | | 16n 164 165 166 167 十进制数 65,536 1,048,576 16,777,216 268,435,456
十进制数转换成十六进制数
除法 422/16 26/16 1/16 422D = 1A6H
商 26 1 0
余数 6 A 1
十六进制加法
将对应位置的两个十六进制数码相加,再把和除以基数 (16) ,得到的商作为进位的值,余数作为和的数码。 重要技能:程序员经常需要对变量和指令的地址做加法或减 法 (1) 36 + 42 78 28 45 6D 28 58 80 (1) 6A 4B B5
二进制数补码
负数都用补码表示 用加法做减法,被称为“加性逆元” (additive inverse)或变 补 起始值: 第一步:每位取反 第二步:把第一步的值加 1 求和:变补码表示为 00000001 11111110 11111110 +00000001 11111111
注意:特例 00000001 + 11111111 = 00000000
106 109 10
12
1015 1018 1021 1024
十六进制整数
二进制数经常用十六进制数来表示
二进制 0000 0001 0010 0011 0100 0101 0110 0111 十进制 0 1 2 3 4 5 6 7 十六进制 0 1 2 3 4 5 6 7 | | | | | | | | | 二进制 1000 1001 1010 1011 1100 1101 1110 1111 十进制 8 9 10 11 12 13 14 15 十六进制 8 9 A B C D E F
成绩评定
期末考试:60% 作业:10% 实验:15% 出勤:15%
汇编语言的应用
一些代表性的应用:
单一平台的业务应用 硬件设备驱动程序 多平台的业务应用 嵌入式系统和计算机游戏
应用实例
A-7E 航空电子系统 Avionics System
使用时期:1960-1980 年代 读取传感器信息,改变驾驶舱操作显示,以帮助飞行员将武 器投向目标。软件并不真正操控飞机飞行。
学习目标
为什么要学习汇编语言? 学习汇编语言需要的背景知识有哪些? 什么是汇编语言使用的编译器? 学习汇编语言需要的软件/硬件有哪些? 汇编语言是怎样的代码? 通过学习这门课程能学到什么? 汇编语言与机器语言的关系是什么? C++ 和 Java 与汇编语言的关系是什么? 汇编语言的移植性如何? 为什么要学习汇编语言?
相关主题