0. 教材版本信息
IBM-PC 汇编语言程序设计(第二版)
沈美明,温冬婵 编著
1. 汇编语言的特点
- 面向机器的低层语言,通常是为特定的计算机或计算机系列专门设计的
- 和机器语言相对应,可以更直接和方便的访问控制硬件设备
- 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言
- 可以与高级语言配合使用,应用十分广泛
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1ee1ad45f97d57d2981ac41b83286404.png#pic_center)
2. 数制及之间的转换
数制 | 基数 | 数制符号 | 表示方法 |
---|
二进制 Binary | 2 | 0、1 | 1101011B |
八进制 Octal | 8 | 0、1、2 … 7 | 307Q或307O |
十进制 Decimal | 10 | 0、1、2 … 7、8、9 | 189(默认进制) |
十六进制 Hexadecimal | 16 | 0、1、2 … 7、8、9,A、B、C、D、E、F | 5AD9H |
3. 运算模式及规则
- 算术运算
- 二进制计算模式,计算时最高位按数值计算(是否是符号,底层运算器不考虑)
- 注意:标志位对结果的判定
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5c530249dbe0300601d13e554a554a51.png#pic_center)
- 逻辑运算
- 标准逻辑运算:与、或、非,异或
- 对应位运算操作,位之间无联系(无进位),数值不是传统意义
- 高位进位无意义
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0d18e9205c9839e0cf2009b2032afeff.png#pic_center)
4. 涉及的符号编码
- BCD码
二 - 十进制编码(Binary Coded Decimal)
十进制字符 | 8421码 | 十进制字符 | 8421码 |
---|
0 | 0000 | 5 | 0101 |
1 | 0001 | 6 | 0110 |
2 | 0010 | 7 | 0111 |
3 | 0011 | 8 | 1000 |
4 | 0100 | 9 | 1001 |
1000 0101 B,BCD码:85
- ASCII码
American Standard Code for Information Interchange
设备或部件之间交换信息使用
不可见码:回车CR,换行LF等
可见码:数字,字母等
数字 | ASII码 |
---|
0 | 30H |
1 | 31H |
2 | 32H |
… | … |
9 | 39H |
字母 | ASII码 | 字母 | ASII码 |
---|
a | 61H | A | 41H |
b | 62H | B | 42H |
c | 63H | C | 43H |
… | … | … | … |
z | 7AH | Z | 4AH |
注:字符加单引号,直接汇编出ASCII码
5. 习题
- 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:
(1) 369 (2) 10000 (3) 4095 (4) 32767
- 答:(1) 369=1 0111 0001B=171H
(2) 10000=10 0111 0001 0000B=2710H
(3) 4095=1111 1111 1111B=FFFH
(4) 32767=111 1111 1111 1111B=7FFFH
- 将下列二进制数转换为十六进制数和十进制数:
(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111
- 答:(1) 10 1101B=2DH=45
(2) 1000 0000B=80H=128
(3) 1111 1111 1111 1111B=FFFFH=65535
(4) 1111 1111B=FFH=255
- 将下列十六进制数转换为二进制数和十进制数:
(1) FA (2) 5B (3) FFFE (4) 1234
- 答:(1) FAH=1111 1010B=250
(2) 5BH=101 1011B=91
(3) FFFEH=1111 1111 1111 1110B=65534
(4) 1234H=1 0010 0011 0100B=4660
- 完成下列十六进制数的运算,并转换为十进制数进行校核:
(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F
- 答:(1) 3A+B7H=F1H=241
(2) 1234+AFH=12E3H=4835
(3) ABCD-FEH=AACFH=43727
(4) 7AB×6FH=35325H=217893
- 下列各数均为十进制数,请用 8 位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)
- 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0
(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0
(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0
(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1
(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1
(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0
- 下列各数为十六进制表示的 8 位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?
(1) D8 (2) FF
- 答:(1) D8H 表示的带符号数为 -40,D8H 表示的无符号数为 216;
(2) FFH 表示的带符号数为 -1, FFH 表示的无符号数为 255。
- 下列各数均为用十六进制表示的 8 位二进制数,请说明当它们分别被看作是用补码表示的数或字
符的 ASCII 码时,它们所表示的十进制数及字符是什么?
(1) 4F (2) 2B (3) 73 (4) 59
- 答:(1) 4FH 表示的十进制数为 79,4FH 表示的字符为 O;
(2) 2BH 表示的十进制数为 43,2BH 表示的字符为 +;
(3) 73H 表示的十进制数为 115,73H 表示的字符为 s;
(4) 59H 表示的十进制数为 89,59H 表示的字符为 Y。
- 请写出下列字符串的 ASCII 码值。
For example,
This is a number 3692.
- 答:46H 6FH 72H 20H 65H 78H 61H 6DH 70H 6CH 65H 2CH 0AH 0DH
54H 68H 69H 73H 20H 69H 73H 20H 61H 20H 6EH 75H 6DH 62H 65H
72H 20H 33H 36H 39H 32H 2EH 0AH 0DH