80X86汇编语言程序设计 第一章基础知识
钱晓捷新版汇编语言程序设计习题答案(修改)详解

钱晓捷新版汇编语言程序设计习题答案第一章汇编语言基础知识1.1、简述计算机系统的硬件组成及各部分作用1.2、明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB1.3、什么是汇编语言源程序、汇编程序、目标程序?1.4、汇编语言与高级语言相比有什么优缺点?1.5、将下列十六进制数转换为二进制和十进制表示(1)FFH (2)0H (3)5EH (4)EFH(5)2EH (6)10H (7)1FH (8)ABH1.6、将下列十进制数转换为BCD码表示(1)12 (2)24 (3)68 (4)127(5)128 (6)255 (7)1234 (8)24581.7、将下列BCD码转换为十进制数(1)10010001 (2)10001001 (3)00110110 (4)10010000(5)00001000 (6)10010111 (7)10000001 (8)000000101.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示(1)0 (2)-127 (3)127 (4)-57(5)126 (6)-126 (7)-128 (8)681.9、完成下列二进制数的运算(1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001(5)1011 ∧~1011 (8)1011 ⊕1001 1001(6)1011 ∨1001(7)1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符?1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?1.12、简述Intel 80x86系列微处理器在指令集方面的发展。
1.13、什么是DOS和ROM-BIOS?1.14、简述PC机最低1MB主存空间的使用情况。
汇编语言基础

主存空间
段基地址:代码段寄存器CS指示
偏移地址:指令指针寄存器EIP保存
•数据段(Data Segment)
堆栈段 数据段 程
序 指令段
段基地址:数据段寄存器DS指示
有时也用附加段寄存器ES,段寄存器FS和GS指示
偏移地址:各种存储器寻址方式计算出来
•堆栈段(Stack Segment)
18
第1章 汇编语言基础
1. 存储模型
• 物理存储器以字节为基本存储单位 • 每个存储单元被分配一个唯一的地址 • 这个地址就是物理地址 • 物理地址空间从0开始顺序编排,直到处理器支持的
最大存储单元
8086处理器支持1MB存储器:00000H~FFFFFH
IA-32处理器支持4GB存储器:00000000H~FFFFFFFFH
时候
• 分析具体系统尤其是该系统的低层软件、加密
解密软件、分析和防治计算机病毒等等
36
第1章 汇编语言基础
1.2.5 软件系统
• Windows操作系统平台 •MASM 6.15汇编程序
编辑程序,汇编程序 连接程序,调试程序
第1章 汇编语言基础
1.1 英特尔80x86处理器 1.2 个人计算机系统 1.3 汇编语言程序格式
第1章 汇编语言基础
➢ 了解软硬件开发环境 ➢ 熟悉通用寄存器和存储器组织 ➢ 掌握汇编语言的
语句格式、程序框架和开发方法
1.1 英特尔80x86处理器
Intel 64处理器 酷睿多核系列 奔腾多核系列
段寄存器
段选择器
段描述符
段基地址
主存空间
数据或指令
27
第1章 汇编语言基础
汇编语言第1章 汇编语言基础知识

9
1.2.1 带符号数的补码表示
3. 补码 正数的补码表示与正数的原码相同,即最高符号位用0表 示正,其余位为数值位。负数的补码最高符号位用1表示 负数。负数的补码表示是正数的补码各位求反(包括符号 位),末位加1构成。将负数的补码转换成真值,则将补 码末位减1,各位求反,再加上负号。 例1.7 求补码1001 0110B的真值。 分析:补码1001 0110B的最高位为1,说明是负数的补码, 将例1.6的过程反过来做,即减1后,各位求反,最后加上 负号。 [1001 0110B-1]求反=[1001 0101B]求反 =0110 1010B=106 则[1001 0110B]真值=-106 10
计算机怎么知道这些组合的意思?
?
•
2
1.1.1 CPU指令
• CPU指令:0和1的一些组合。 每款CPU在设计时就规定了一系列与其硬件 电路相配合的指令系统。有了CPU指令集的文档, 就可以通过这个编写CPU认识的机器代码了。 所以,对于不同CPU来说可能会有不同的机 器码。
3
1.1.2 计算机程序设计语言
5
1.1.4 学习汇编语言的主要 目的
1.一些特定的场合需要使用汇编语言。 2. 有助于深入地理解计算机硬件,掌握计算 机硬件、操作系统、应用程序之间的交互 工作。 3. 帮助加深对高级语言的理解。 4. 是学习后续专业课程的基础。
6
1.2.1 带符号数的补码表示
1. 原码 最高有效位表示符号(0-正数,1-负数), 其他位表示数值。在计算机中用原码作加 减运算是不方便的。
11
1.2.2 ASCII码
例1.8 (1)数字值0~9和数字字符’0’~‘9’之间的转 换关系;(2)十六进制数0AH~0FH和字 符’A’~’F’之间的转换关系。
汇编 第1章 基本知识与基本概念汇总

2018/9/20
2018/9/20 qingyang@ 2
• 汇编语言是计算机能提供给用户的最快而最有效 的语言,也是能够利用计算机所有硬件特征并能 直接控制硬件的唯一语言。在对于程序的时间和 空间要求很高的场合,在需要直接控制硬件的应 用场合,汇编语言是必不可少的。 • 不同的CPU有不同的指令系统,不同的计算机系 统有不同的硬件特征。在进行汇编语言程序设计 之前,需要了解特定系统的硬件结构和指令系统。
第一代(1971年~1973年):4位和8位低档微处理器
第二代(1974年~1977年):8位中高档微处理器 第三代(1978年~1982年):16位微处理器 第四代(1983年~1999年):32位微处理器 第五代(2000年以后): 64位高档微处理器
2018/9/20
qingyang@
各部分的主要功能: (1)输入设备:用于输入原始信息和处理信息的程序。 (2)输出设备:用来输出计算机的处理结果及程序清单。 (3 )存储器:用来存放程序和数据。在控制器的控制下,可 与输入设备、输出设备、运算器、控制器交换信息,是计算 机中各种信息存储和交流的中心。 (4 )运算器:用来对信息及数据进行处理和计算。也称为算 术逻辑部件ALU(Arithmetic and Logic Unit)。 (5 )控制器:是整个计算机的指挥中心,用来指挥计算机各 部件的操作,使其协调一致地工作。
本课程在Intel 8088/8086 和 IBM-PC 的基础上讨论汇编 语言程序的设计方法
2018/9/20
qingyang@
3
1.2 微处理器,微型计算机,微型计算机系统
• 计算机的基本结构
运算器
程序和 输入设备 原始数据 存储器 输出设备
8086汇编语言程序设计第1章+基础知识

South china normal university
补码的特点 a、对于正数,补码与实际值一致,符号位为0。 b、对于负数,补码与实际值互补。(补码是实
际值每位取反码,末尾加1 ) c、[+0]补=[-0]补=00000000 d、8位字长的表示范围:
South china normal university
带符号数和不带符号数 每个字节或字的最高位设置为符号位。 当符号位为0时,该数为正数。 当符号位为1时,该数为负数。 若用8位二进制来表示1个十进制数,则
D7 位为符号位,D6~D0位为数字位。 +105 0 1101001B -105 1 1101001B(机器数)
汇编程序
可
目 标
运
程 连接程序 行
序
程
序
序
.asm
.obj
.exe
South china normal university
高级语言包括: 面向过程的语言和和面向对象语言。
面向过程语言: 采用的是人们所熟悉的、便于记忆的和容
易理解的结构化的语言。
面向对象的语言: 是从面向过程语言发展而来的,它改变了
South china normal university
数的表示方法
数制 计算机内部是采用二进制数(Binary)进行操
作和运算的。 在编写汇编语言源程序时,为了书 写方便,可以使用: 十进制数(D) 八进制数(O) 十六进制数(H)
需要注意的问题:
通过汇编程序把汇编语言源程序转换为目标程序时,程 序中的十进制数、八进制数、十六进制数均由汇编程序自动 转换成二进制数。
South china normal university
汇编语言程序设计_第1章 基础知识

2019/8/26
80x86汇编语言程序设计
1.2.2 无符号数与带符号数
1. 无符号数
N位二进制数可以表示的无符号数范围为0~2N -1。例如,8位二进制数00H~0FFH表示0~ 255,16位二进制数0000H~0FFFFH表示0~65535。
数字'0'~'9':30H~39H 字母'A'~'Z':41H~5AH 字母'a'~'z':61H~7AH 空格:20H 回车CR:0DH 换行LF:0AH 空字符:0 注意回车与换行的差别: CR用来控制光标回到当前行的最左端;LF用来移动光标到下一行,而所在列不变。
2019/8/26
80x86汇编语言程序设计
2019/8/26
80x86汇编语言程序设计
3.补码的特性
求补
[补
[-x]补
[x + y]补 = [x]补 + [y]补
[x - y]补 = [x]补 + [-y]补
说明:
在计算机内部,补码减法是通过对减数求补后将减法转换为加法进行的。
一个带符号数在不同位数下,其二进制补码表示可能是不同的。例如,8位数-1的补码 表示是0FFH, 16位数-1的补码表示是0FFFFH。
-x = 256 -∣x∣
5. 符号扩展与零扩展
符号扩展是将原符号位填入扩展的每一位,使得在带符号数意义下取值不变。 零扩展是将0填入扩展的每一位,使得在无符号数意义下取值不变。
2019/8/26
80x86汇编语言程序设计
汇编语言程序设计第1章基础知识

1.1.1 机器语言
计算机能够直接识别的数据是由二进制数0 和1组成的代码。机器指令就是用二进制代码组 成的指令,一条机器指令控制计算机完成一个基 本操作。
用机器语言编写的程序是计算机惟一能够 直接识别并执行的程序,而用其他语言编写的程 序必须经过翻译才能变换成机器语言程序,所以, 机器语言程序被称为目标程序。
第1章 基础知识
1.1.3 高级语言
汇编语言虽然较机器语言直观,但仍然烦 琐难懂。于是人们研制出了高级程序设计语言。 高级程序设计语言接近于人类自然语言的语法习 惯,与计算机硬件无关,易被用户掌握和使用。
目前广泛应用的高级语言有多种,如 BASIC、FORTRAN、PASCAL、C、C++等等。
第1章 基础知识
第1章 基础知识
1.3.3 标志寄存器
8086CPU中有一个很重要的16位标志寄存器,它 包含9个标志位,主要用于保存一条指令执行后, CPU所处状态信息及运算结果的特征。
1.条件标志 2.状态控制标志
第1章 基础知识
1.条件标志
(1)进位标志CF (2)零标志ZF (3)符号标志SF (4)溢出标志 OF (5)奇偶标志 PF (6)辅助进位标志AF
Intel 8086CPU内部结构 8086寄存器组 标志1.3.1 Intel 8086CPU内部结构
图1.2 8086CPU内部结构
图1.2 8086CPU内部结构
返回本节
1.3 8086CPU
第1章 基础知识
1.3.2 8086寄存器组
图
寄 存 器 分 组
1.1.4 汇编语言的特点
(1)汇编语言与处理器密切相关。 (2)汇编语言程序效率高。 (3)编写汇编语言源程序比编写高级语言源程 序烦琐。 (4)调试汇编语言程序比调试高级语言程序困 难。
汇编语言程序设计复习

知识点第一章基础知识(1)正负数的补码表示, 掌握计算机中数和字符的表示;eg.假设机器字长为8位,[+3]补=00000011B,[-3]补= 11111101 H 。
十六进制数0FFF8H表示的十进制正数为65528D,表示的十进制负数为-8D。
8位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是 127 。
第二章80x86计算机组织(1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器eg: IP寄存器中保存的是?代码段中的偏移地址FLAGS标志寄存器中共有几位条件状态位6位,有几位控制状态位2位,标志寄存器分为哪2类?陷阱标志,中断标志。
(2)存储单元的地址和内容每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。
存储器地址的分段,(低位字节存放)低地址,(高位字节存放)高地址;实模式下逻辑地址、选择器和偏移地址;物理地址的表示段基地址加上偏移地址。
eg.如果SS=6000H,说明堆栈段起始物理地址是_____60000H___。
已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为__1420H______。
如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H .第三章80x86的指令系统和寻址方式与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址)。
数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS 指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
80X86汇编语言程序设计
第一章基础知识(1.2.)
一.进制转换:
(1)十进制转换成二进制:除2取余法
(2)十进制转换成十六进制:除16取余法
(3)二进制转换成十进制:权的展开式,各位二进制数码乘以与其对应的权之和
(4)十六制转转换成十进制:权的展开式,各位十六进制数码乘以与其对应的权之和
(5)二进制转换成十六进制:四位归一法(8421码),把二进制数码从低位到高位每4位组成一组,直接用十六进制数来表示
(6)十六进制转换成二进制:一位分四法(8421码),把十六进制数中的每一位用4位二进制数表示,就形成相应的二进制数
二.数据的表示
(1)数的补码表示(有符号数)
把一个数连同其符号在内在机器中的表示加以数值化,这样的数称为机器数。
一般用最高有效位来表示数的符号。
正数用0表示,负数用1表示。
机器数可以用不同的码制来表示,常用的有原码、补码和反码表示法。
补码表示法中,正数采用符号绝对值表示;负数X用2的n次方-X来表示,其中n位机器的字长。
0的补码就是00000000
8位表示数的有符号整数的范围为:-128~+127.
16位表示数的有符号整数的范围为:-32768~+32767.
例如:机器字长为16位,写出N=-117D的补码表示
+117D可表示为:0000 0000 0111 0101
按位求反后为: 1111 1111 1000 1010
末位加1后为: 1111 1111 1000 1011
十六进制数为: F F 8 B
N=-117D的补码是FF8BH
(2)无符号数
8位表示数的无符号整数的范围为:0~255(256-1).
16位表示数的无符号整数的范围为:0~65535(65536-1).
(3)符号扩展
当要扩展的数是无符号数时,只要在最高位前扩展(m-n)个0。
如果要扩展的数是有符号数,并且采用补码形式表示,进行符号扩展。
(正数前面用0补齐;负数
最高有效位如果是1,前面就加1。
)
(4)补码的加法和减法
求一个正数的补码表示按位求反后再在末位加1,可以得到此正数相应的负数的补码表示。
把这种对一个二进制数按位求反后在末位加1的运算成为求补运算。
【X】补——【-X】补——【X】补
补码的加法规则是:
【X+Y】补=【X】补+【Y】补
-【X-Y】补=【X】补+【-Y】补
非数值数据:
1.ASCII码(7位=128个字符)(8位=256字符)
数字:30~39H
大写字母:41~5AH
小写字母:61~7AH
控制字符:00~19H
2.变形国际码
基本数据类型
1.字节
2.字
3.双字
4.字符串。