




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章汇编语言基础知识1.1汇编语言简介1.2计算机中数据的表示1.1汇编语言简介1.1.1机器语言与汇编语言1.1.2汇编语言的组成1.1.3为什么要学习汇编语言1.1.1机器语言与汇编语言机器指令:cpu能直接识别并遵照执行的指令,用二进制编码表示,由操作码,操作数组成,编码只含二进制0或1。机器语言:用二进制编码组成的机器指令的集合和一组使用机器指令的规则。汇编语言:对机器指令中的操作码用英文单词的缩写描述(助记符),对操作数用标号、变量、常量描述。
用汇编语言编写的程序称为汇编源程序。
但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行。这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。
1.1.2汇编语言的组成汇编语言有以下三类指令组成:汇编指令:机器码的助记符,有对应的机器码。它是汇编语言的核心。伪指令:没有对应的机器码,由编译器执行,计算机并不执行。其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
1.1.3为什么要学习汇编语言汇编语言程序是用符号指令写成的,本质上还是机器语言,与具体机机型的硬件密切相关,可以直接有效地控制计算机硬件,程序运行速度快,程序短小精悍,占用内存少,在某些特殊应用场合更能发挥作用。如:智能化仪表,家用电器,实时控制系统,单片机控制,病毒研究等。学习汇编语言是从根本上认识和理解计算机工作过程的最好方法。汇编程序与汇编源程序的区别是什么?汇编源程序是指用汇编语言编写的程序,而汇编程序特指将汇编源程序汇编成目标文件的编译程序。正确不正确AB提交单选题15分1.2计算机中数据的表示1.2.1不同进位计数制及其相互转换1.2.2二进制数和十六进制数的运算1.2.3带符号数的表示1.2.4补码的加法和减法1.2.5无符号数的表示1.2.6字符的表示1.2.7基本逻辑运算1.2.1不同进位计数制及其相互转换1.进位计数制对于任意一个进位计数制,如果用R表示基数,那么任何一个数S均可用如下多项式表示:
S=knRn+kn-1Rn-1+…+k0R0+k-1R-1+k-2R-2+…+k-mR-m
十进制数:423.5=4×10^2+2×10^1+3×10^0+5×10^-1
各位权值10^k
二进制数:101101(B)=1×2^5+1×2^3+1×2^2+1×2^0=45(D)
各位权值2^k
十六进制数:5F(H)=5×16^1+15×16^0(D)各位权值16^k
在书写不同进位计数制数时,常常在尾部用一个字母来表示该数是什么进位计数制的数。结尾用B(2进制数)、O(8进制数)、D(10进制数)、H(16进制数)。缺省为十进制数。例如712O、9198D、10010B、BE49H等等。
2.各种数制间的相互转换例如:13.8125D=
1101.1101B=D.DH
二进制数转换为十进制数方法:各位二进制数码乘以对应的权之和例:1.1N=101101.1B=1×2^5+1×2^3+1×2^2+1×2^0+1×2^-1=45.5D十六进制数转换为十进制数方法:各位十六进制数码乘以对应的权之和例:1.2
N=5FH=5×16^1+15×16^0=80+15=95D
十进制数转换为二进制数(1)降幂法:先写出小于此数的各位二进制权值,然后再求和。(适用于数值不大的数)例:1.3
求N=13.5D的二进制数。小于此数的各位二进制权值为:
84210.5
13.5D=8+4+1+0.5=1101.1B
100001000001+0.11101.1
十进制数转换为二进制数(2)除法:不断除以2,计下余数,直到商为0为止。(仅适用于整数部分)例:1.4求N=13D的二进制数。13/2=6余1(b0)6/2=3余0(b1)3/2=1余1(b2)1/2=0余1(b3)13D=b3b2b1b0=1101B对于十进制数的小数部分除了可以使用降幂法也可采用乘法,即不断乘2,并计下整数,而小数部分再乘2,直到结果为0为止。并非所有的十进制小数都能用二进制完全表示,可按需要取一定精度即可。例:1.5求N=0.625D的二进制数。0.625×2=1.25(b-1=1)0.25×2=0.5(b-2=0)0.5×2=1.0(b-3=1)N=0.625D=b-1b-2b-3=0.101B
十进制数转换为十六进制数(1)降幂法:先写出小于此数的各位十六进制权值,然后再求和。(适用于数值不大的数)例:1.6求N=95D的十六进制数。小于此数的各位十六进制权值为:161显然应选16×5,再选1×F,所以N=95D=80+15=16×5+1×F=5FH
十进制数转换为十六进制数(2)除法:不断除以16,计下余数,直到商为0为止。(仅适用于整数部分)例:1.7求N=95D的十六进制数。95/16=5余15(h0)5/16=0余5(h1)N=95D=h1h0=5FH
对于十进制数的小数部分除了可以使用降幂法也可采用乘法,即不断乘16,并计下整数,而小数部分再乘16,直到结果为0为止。并非所有的十进制小数都能用十六进制完全表示,可按需要取一定精度即可。
二进制数和十六进制数的相互转换直接转换,每四位一组,整数从低位开始,小数从高位开始,不足位补0。例:1.8N=1011111.11(B)=01011111.1100(B)=5F.C(H)
把十进制数67转换为二进制数和十六进制数。1000011,431000101,451000011,411000101,43ABCD提交单选题15分把十进制数123转换为二进制数和十六进制数。1111101,7D1111011,7B1111100,7C1111111,7FABCD提交单选题15分把二进制数01101101转换为十六进制数和十进制数。6D,1076C,1076D,1096B,107ABCD提交单选题15分1.2.2二进制数和十六进制数运算二进制运算加法规则:0+0=01+0=10+1=11+1=0(进位1)乘法规则:0×0=01×0=00×1=01×1=1
十六进制数运算原则:逢十六进一
1.2.2二进制数和十六进制数运算例1.9 43A5+5A349DD9例1.10 5A34-43A5168F1.2.2二进制数和十六进制数运算例1.11 2A34×0025D304
+546861984(H)1.2.3带符号数的表示带符号数最高位是符号位。正数的符号位为0,负数的符号位为1。表示方法:原码、补码、反码。例1.12用8位二进制来表示,求[-3]补。先写出+3:00000011各位取反为:11111100最低位加1为:11111101[-3]补=11111101,或用十六进制表示,[-3]补=FDH数的补码表示
定义:
(X>=0时)[X]补=符号+|X|------(1)
(X<0时)[X]补=2^n-|X|=(2^n-1-|X|)+1---(2)即X<0时:
[X]补+|X|=2^n数的补码具体操作是:正数不变,负数则用绝对值取反+1例1.13依据补码定义写出以下各数的补码,以8位二进制表示。[-1]补=256-1=100000000-1=11111111,直接由(2)式得到。[-127]补=2^8-127=(256-1-127)+1=(11111111-01111111)+1=10000000+1=10000001例1.14识别以下各数的十进制值。[a]补=11111111,求补后为00000001=[1]补,所以,a=-1[b]补=10000000,求补后为10000000=[128]补,所以,b=-128[c]补=10000001,求补后为01111111=[127]补,所以,C=-1271.2.4补码的加减法加法规则:[X+Y]补=[X]补+[Y]补减法规则:[X-Y]补=[X]补+[-Y]补例:1.158位补码的加法运算十进制 二进制
25 00011001+(-32)+11100000
-7111110013200100000+(-25)+11100111700000111 1↙
根据补码定义把十进制数-24表示为8位二进制补码。[10011000]
补[11100111]补[11101000]补ABC提交单选题15分此处添加题目描述11111001000010011111011111110110ABCD提交多选题25分1.2.5无符号数的表示对于正数,不保留符号位,把符号位也作为数值,这样的数叫无符号数。1.2.6字符的表示ASCII码扩充的ASCII码表1.2回车:0dh换行:0ah空格:20h0~9:30h~39hA~Z:41h~5aha~z:61h~7ah1.2.7基本逻辑运算逻辑运算按位操作与运算AND或运算OR异或运算XOR非运算NOT第2章计算机基本原理2.1计算机系统组成2.2存储器2.3中央处理器(CPU)中的寄存器2.4外部设备和接口2.532位80x86CPU的工作模式2.1计算机系统组成计算机的基本工作原理是存储程序和程序控制。冯诺依曼原理的计算机结构2.2存储器
2.2.116位结构的CPU2.2.2存储器2.2.3存储器分段2.2.4逻辑地址2.2.5CPU对内存的读写操作2-1 8086CPU结构2.2.116位结构的CPU8086是16位结构的CPU。16位结构的CPU具有以下几方面的结构特征:(1)数据总线为16位;(2)运算器一次最多可以处理16位的数据;(3)寄存器的最大宽度为16位;(4)寄存器和运算器之间的通路为16位。2.2.2存储器1.基本存储单元计算机存储信息的最小单位是一个二进制位(bit)8位二进制位组成一个字节(Byte)2个字节(16位)组成一个字(Word)2个字(32位)称为双字。80x86微机的内存储器以字节为基本存储单位,或叫基本存储单元2.2.2存储器2.内存中字的存储字与字节的对应关系从31200H单元开始存放的字数据为A28FH,从31202H单元开始存放的字数据为1234H,分别记为:(31200H)字=A28FH(31202H)字=1234H2.2.3存储器分段1.分段的概念内存并没有分段,分段只是CPU管理内存的方式。图2-4分段示意图2.2.3存储器分段2.段的类型代码段—用于存放指令,代码段段基址存放在段寄存器CS数据段—用于存放数据,数据段段基址段地址存放在段寄存器DS附加段—用于辅助存放数据,附加段段基址存放在段寄存器ES堆栈段—是重要的数据结构,可用来保存数据、地址和系统参数,堆栈段段基址存放在段寄存器SS2.2.4逻辑地址逻辑地址是用户编程时使用的地址,分为段地址和偏移地址两部分。段地址:偏移地址2.2.4逻辑地址
可以写下3位数据的纸条可以写下4位数据的纸条如何描述从宿舍到教室的距离?2.2.4逻辑地址例题2-1段基址为1896H,偏移地址为1655H。其物理地址为多少?18960H+1655H=19FB5H给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围从
[填空1]
到
[填空2]
要求:填空1和填空2需要用完整的五位十六进制来表示,末尾还要加上十六进制数的标志H.作答填空题50分已知8086系统某存储单元物理地址为:52506H,段基址的最大值是
[填空1]
,最小值是
[填空2]
。要求:填空1和填空2需要用完整的4位十六进制来表示,末尾还要加上十六进制数的标志H.作答填空题50分2.2.5CPU对内存的读写操作
CPU要想进行数据的读写,必须和外部器件(芯片)进行下面3类的信息交互。(1)存储单元的地址(地址信息)(2)器件的选择,读或写命令(控制信息)(3)读或写的数据(数据信息)2.2.5CPU对内存的读写操作CPU从地址为3的内存单元中读取数据的过程(1)CPU通过地址线将要进行操作的内存单元地址“3”发出;(2)CPU通过控制线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据(3)存储器将内存单元地址为“3”中的数据“32H”通过数据线送入CPU
2.2.5CPU对内存的读写操作写操作与读操作的步骤相似,如向地址为“3”的单元写入数据“FFH”。(1)CPU通过地址线将要进行操作的内存单元地址“3”发出;(2)CPU通过控制线发出内存写命令,选中存储器芯片,并通知它,要向其中写入数据。(3)CPU通过数据线将数据“FFH”送入内存的地址为“3”的单元中。2.2.5CPU对内存的读写操作要让一个计算机或微处理器工作,应向它输入能够驱动它进行工作的电平信息(即机器码)。
对于8086CPU,下面的机器码,能够完成从内存地址为“3”的单元读数据。机器码:101000010000001100000000含义:从内存地址为“3”的单元读取数据送入寄存器AX机器码是01串,难以记忆和书写,用汇编指令来表示,情况如下。对应的汇编指令:MovAX,[3]含义:从内存地址为“3”的单元读取数据送入寄存器AX2.3中央处理器(CPU)中的寄存器2.3.1寄存器介绍2.3.2CS和IP2.3.3堆栈2.3.1寄存器介绍1.通用数据寄存器8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,有时候也可以存放地址,被称为通用数据寄存器。①AX:累加器,运算时较多使用这个寄存器,有些指令规定必须使用它。
②BX:基址寄存器,除了存放数据,它经常用来存放一段内存的起始偏移地址。
③CX:计数寄存器,除了存放数据,它经常用来存放重复操作的次数。
④DX:数据寄存器,除了存放数据,它有时存放32位数据的高16位。2.3.1寄存器介绍2.地址寄存器16位的8086处理器有4个16位的通用地址寄存器。它们的主要作用是存放数据的所在偏移地址,也可以存放数据。这4个寄存器不能再拆分使用。
①SP:堆栈指针,这是一个专用的寄存器,存放堆栈栈顶的偏移地址。
②BP:基址指针,可以用来存放内存中数据的偏移地址。
③SI:源变址寄存器,它经常用来存放内存中源数据区的偏移地址,所谓变址寄存器,是指在某些指令作用下它可以自动地递增或递减其中的值。
④DI:目的变址寄存器,它经常用来存放内存中目的数据区的偏移地址,并在某些指令作用下可以自动地递增或递减其中的值。2.3.1寄存器介绍3.段寄存器16位80x86处理器有4个16位的段寄存器,分别命名为CS,SS,DS,ES。它们用来存放4个段的段基址。
①CS:代码段寄存器,用来存放当前正在执行的程序段的段基址。
②SS:堆栈段寄存器,用来存放堆栈段的段基址。
③DS:数据段寄存器,用来存放数据段段基址。
④ES:附加段寄存器,用来存放另一个数据段的段基址。
2.3.1寄存器介绍4.指令指针寄存器IP:指令指针寄存器,存放即将执行指令的偏移地址。5.指令指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论