汇编语言基本知识_第1页
汇编语言基本知识_第2页
汇编语言基本知识_第3页
汇编语言基本知识_第4页
汇编语言基本知识_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编语言基本知识 1.1 计算机语言系统 计算机语言发展简史机器语言汇编语言高级语言FORTRANBASICCOBOLPASCALC/C+JAVA.1.1.1 机器语言1.1.2 汇编语言1.1.3 高级语言1.1.4 汇编语言的特点1.1.1 机器语言1.机器指令: CPU能直接识别并遵照执行的指令称为机器指令,在形式上表现为二进制编码,一般由操作码和操作数两部分构成。 操作码指出要进行的操作或运算,如加减、传送等。 操作数指出参与操作或运算的对象,也指出结果存放的位置。如CPU的寄存器、存储单元等。 CPU不同,对应的机器指令也不同。 一条机器指令控制计算机完成一个基本操作。 2.机器语言

2、 机器语言是用二进制编码的机器指令的集合及一组使用机器指令的规则; 用机器语言编写的程序是计算机惟一能够直接识别并执行的程序,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序,所以,机器语言程序被称为目标程序。 为了阅读方便,常用16进制或8进制形式表示二进制编码例:Intel8086指令写两数相加的程序片断。具体是将偏移2200H存储单元中的数与偏移2201H存储单元中的数相加,结果存入偏移2202H存储单元中。(16进制形式表示) A0 00 20 02 06 01 20 A2 02 203.机器语言的特点: 编程难度大,调试困难 可读性、可移植性、通用性差1.1.2 汇编语言1.

3、汇编格式指令: 为了克服机器语言的缺点,人们采用便于记忆、并能描述指令功能的符号来表示机器指令的操作码。这些符号被称为指令助记符。 用指令助记符、地址符号等符号表示的指令称为汇编格式指令2.汇编语言: 汇编语言是汇编格式指令、伪指令的集合及其表示、使用这些指令的一组规则。 用汇编语言编写的程序称为汇编源程序。 例如:将前例的程序写成汇编语言程序为: MOV AL, VAR1 ; 或 mov al, 2000H ADD AL, VAR2 ;或 add al, 2001H MOV VAR3, AL ;或 mov 2002H, al3.汇编程序: 汇编语言是一种符号语言,比机器语言容易理解和掌握,也

4、容易调试和维护。但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行。这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。 汇编过程示意图 汇编程序汇编语言源程序汇编目标程序1.1.3 高级语言 汇编语言虽然较机器语言直观,但仍然烦琐难懂。于是人们研制出了高级程序设计语言。高级程序设计语言接近于人类自然语言的语法习惯,与计算机硬件无关,易被用户掌握和使用。目前广泛应用的高级语言有多种,如BASIC、FORTRAN、PASCAL、C、C+等等。1.1.4 汇编语言的特点(1)汇编语言与处理器密切相关(2)汇编语言程序效率高。 运行速度快时间 目标程序短空间

5、(3)编写汇编语言源程序比编写高级语言源程序烦琐 汇编语言是面向机器的语言 高级语言是面向过程或面向目标、对象的语言(4)调试困难 汇编语言的主要应用场合:(1)对软件的执行时间和存储容量有较高要求的场合。如系统程序的核心,智能化仪器仪表的控制系统,实施控制系统等。(2)程序与计算机硬件密切相关,程序直接控制硬件的场合。例如设备驱动程序。 (3)需提高大型软件性能的场合。执行频率较高的子程序。 (4)没有合适的高级语言的场合。 下面是两个小例子,例1是用高级语言VC+编写的,例2是用汇编语言编写的。它们完成相同的功能,即把a、b的内容相加赋给c,并在屏幕上显示出来。 例1:编译后的目标文件达到

6、3.59KB#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=%dn,c); return 0; 例2:data segmenta db ?b db ?c db ?string db c=$data endscode segmentmain proc far assume cs:code, ds:data, es:datastart: push ds sub ax,ax push ax mov ax,data mov ds,ax mov

7、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 int 21h mov dl,0ah int 21h mov dl,0dh int 21h retmain endpcode ends end start汇编后的目标文件只有208字节1.2 数据表示及转换1.2.1 进位计数制及转换1.2.2 数值数据1.2.3 字符数据1.2.1 进位计数制及转换1.数制数 值 基数 数 码二进制 Binary 2 0,1 八进制 Octal

8、 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十进制(D):基数为10,逢十进一12.34 = 1101 + 2 100 + 3 10-1 + 4 10-2 二进制(B):基数为2,逢二进一1101B = 1 23 + 1 22 + 1 20 = 13十六进制(H):基数为16,逢十六进一9187H= 9 163 + 1 162 + 8 161 + 7 160八进制(0):基数为8,逢八进一 2167O=2831826817802

9、. 数制之间的转换二进制 十进制 1011B = 11D (1)降幂法 例: 27D = ? B 27 11 3 3 1 - - - - - 16 8 4 2 1 1 1 0 1 1 27D = 11011B (2)除法例:117D=?B 商 余数 117/2 =581 58/2 =290 29/2 =141 14/2 =7.0 7/2 =31 3/2 =11 1/2 =0.1 117D=1110101B二进制 十六进制 0011 0101 1011 1111B 3 5 B F 0011,0101,1011,1111B = 35BFH A 1 9 C 1010 0001 1001 1100 A

10、19CH = 1010,0001,1001,1100B十六进制 十进制 BF3CH = 11163 + 15162 + 3161 + 12160 降幂法 例: 399D = ? H 399 143 15 - - - 256 16 1 1 8 F 399D = 18FH3. 运算算术运算二进制 加法规则 乘法规则 0+0=0 00=0 0+1=1 01=0 1+0=1 10=0 1+1=0 (进位1) 11=1十六进制 0 5 C 3 H 3 D 2 5 H + 3 D 2 5 H - 0 5 C 3 H 4 2 E 8 H 3 7 6 2 H1.3 计算机中数的表示1.3.1 数值数据 数值数

11、据分为有符号数和无符号数。无符号数最高位表示数值,而有符号数最高位表示符号。有符号数有不同的编码方式,常用的是补码。1. 原码 最高位表示符号(正数用0,负数用1),其他位表示数值位,称为有符号数的原码表示法。 【例1.1】有符号数的原码表示。X=45=00101101B X原=00101101BX=-45, X原=10101101B 原码表示简单易懂,但若是两个异号数相加(或两个同号数相减),就要做减法。为了把减法运算转换为加法运算就引进了反码和补码。. 反码 正数的反码与原码相同,符号位用0表示,数值位值不变。负数的反码符号位用1表示, 数值位为原码数值位按位取反形成,即0变1、1变0。【

12、例1.2】有符号数的反码表示。X= 45=00101101B, X反= 00101101BY= -45, Y反= 11010010B3. 补码 正数的补码与原码相同,即符号位用0表示,数值位值不变。负数的补码为反码加1形成。【例1.3】有符号数的补码表示。X= 45= 00101101B X补=00101101BY= -45 Y补=11010011B4. 符号扩展 在数据处理时,有时需要把8位二进制数扩展成16位二进制数,当要扩展的数是无符号数时,可在最高位前扩展8个0。如果要扩展的数是补码形式的有符号数,那么,就要进行符号位的扩展,符号扩展后,其结果仍是该数的补码。【例1.4】符号扩展表示。

13、21的8位二进制补码为:00010101 符号扩展后21的16位二进制补码为: 0000000000010101。00010101和0000000000010101都是21的补码。5. 数据的表示范围和大小n位二进制数能够表示的无符号整数的范围是: 0 X 2n 1例如8位无符号数的范围为0255 16位无符号数的范围为065535n位二进制数能够表示的有符号整数的范围是: -2n-1 X +2n-1 1例如8位带符号数的范围为-128+127 16位带符号数的范围为-32568+327676十六进制表示 由于二进制数的基数太小,书写和阅读都不方便.而十六进制的基数1624,这样二进制数与十六

14、进制之间能方便地转换。因此,习惯把二进制数改写成十六进制数,在汇编语言程序设计时尤其如此。 在书写时,为了区别于十六进制和二进制数,通常在十六进制数后加字母H。 1.3.2 字符数据1ASCII码2BCD码1ASCII码 标准ASCII码用7位二进制数编码,共有128个。 计算机存储器基本单位为8位,ASCII码的最高位通常为0,通信时,最高位用作奇偶校验位。 ASCII码表中的前32个和最后1个编码是不能显示的控制字符,用于表示某种操作。 ASCII码表中20H后的94个编码是可显示和打印的字符,其中包括数码0-9,英文字母,标点符号等。 2BCD码 虽然二进制数实现容易,但不符合人们的使用习惯,且书写阅读不方便,所以在计算机输入输出时通常还是采用十进制来表示数,这就需要实现十进制与二进制间的转换。为了转换方便,常采用二进制编码的十进制,简称为BCD码。 BCD码就是用4位二进制数表示1位十进制整数。表示的方法有多种,常用的是8421BCD码,它的表示规律如表1.1所示。 表1.1 十进制数字的8421BCD码十进制数字8421BCD码十进制数字8421BCD码000005010110001601102001070111300118100040100910011.4 逻辑运算“非”运算(NOT) A A 0 1 1 0“与”运算(AND) A B AB 0 0 0 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论