第1章计算机程序设计语言_第1页
第1章计算机程序设计语言_第2页
第1章计算机程序设计语言_第3页
第1章计算机程序设计语言_第4页
第1章计算机程序设计语言_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、IBMIBMPCPC汇编语言程序设计汇编语言程序设计( (第第2 2版版) )主讲教师:罗江琴主讲教师:罗江琴计算机语言的发展计算机语言的发展 机器语言机器语言FORTRANFORTRANBASICBASICCOBOLCOBOLPASCALPASCALC/C+C/C+JAVAJAVA.汇编语言汇编语言高级语言高级语言 汇编语言是介于计算机能直接理解的汇编语言是介于计算机能直接理解的机器语言与用户容易理解的高级语言之间机器语言与用户容易理解的高级语言之间的一种语言。它除了有与代码指令一一对的一种语言。它除了有与代码指令一一对应的符号指令外,还增加了专用于定义变应的符号指令外,还增加了专用于定义变

2、量,常量,符号,过程,分配存储空间,量,常量,符号,过程,分配存储空间,定位程序起始地址等一系列称之为伪指令定位程序起始地址等一系列称之为伪指令的符号指令。的符号指令。汇编语言概述 采用高级语言编写的程序,机器是采用高级语言编写的程序,机器是不能直接执行的,需要由编译程序或解不能直接执行的,需要由编译程序或解释程序将他翻译成对应的机器语言程序,释程序将他翻译成对应的机器语言程序,机器才能接受。而这种机器语言程序往机器才能接受。而这种机器语言程序往往往比较冗长,占用存储空间较大,执行比较冗长,占用存储空间较大,执行起来速度慢,起来速度慢,但能够直接利用机器硬件但能够直接利用机器硬件系统的许多特性

3、,如寄存器,标志位等。系统的许多特性,如寄存器,标志位等。 同高级语言比较,它更接近机器语言,同高级语言比较,它更接近机器语言,更能全面的反映计算机硬件的功能特点。更能全面的反映计算机硬件的功能特点。同机器语言比较,它易于阅读,编写和同机器语言比较,它易于阅读,编写和修改程序。因此,使用汇编语言可编写修改程序。因此,使用汇编语言可编写出出运行速度快,占存储空间少,能充分运行速度快,占存储空间少,能充分利用硬件资源,发挥计算机效能并能进利用硬件资源,发挥计算机效能并能进行精确控制的程序行精确控制的程序。汇编语言是面向机器的语言,故它将因计汇编语言是面向机器的语言,故它将因计算机机型的不同而异,但

4、用汇编语言进行算机机型的不同而异,但用汇编语言进行程序设计的基本概念,基本技巧和基本方程序设计的基本概念,基本技巧和基本方法是普遍适用的。我们选择目前国内最广法是普遍适用的。我们选择目前国内最广泛使用的泛使用的IBM PCIBM PC作为基础讲授。其他机型作为基础讲授。其他机型同学们可触类旁通。同学们可触类旁通。汇编语言的特点汇编语言的特点 面向机器的低级语言,通常是为特定的计算面向机器的低级语言,通常是为特定的计算 机或计算机系列机或计算机系列专门设计的。专门设计的。 保持了机器语言的优点,具有直接和简捷保持了机器语言的优点,具有直接和简捷 的特点。的特点。 可有效地访问、控制计算机的各种硬

5、件设备可有效地访问、控制计算机的各种硬件设备, , 如磁盘、存储器、如磁盘、存储器、CPUCPU、I/OI/O端口等。端口等。 目标代码简短,占用内存少,执行速度快,目标代码简短,占用内存少,执行速度快, 是高效的程序设计语言。是高效的程序设计语言。 经常与高级语言配合使用,应用十分广泛经常与高级语言配合使用,应用十分广泛。#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; 编译后的目标文编译后的目标文件

6、达到件达到3.59KBdata segmentdata segmenta db ?a db ?b db ?b db ?c db ?c db ?string db c=$string db c=$data endsdata endscode segmentcode segmentmain proc farmain proc far assume cs:code, assume cs:code, ds:data, es:datads:data, es:datastart:start: push dspush ds sub ax,ax sub ax,ax push ax push ax movmov

7、 ax,data ax,data mov ds,ax mov ds,ax mov es,ax mov es,axmovmov a,1 a,1 mov mov b,2 b,2 mov mov al,a al,a add al,b add al,b mov mov c,al c,al lea dx,stringlea dx,string mov mov ah,09 ah,09 int int 21h 21h add c,30hadd c,30h mov mov dl,c dl,c mov mov ah,2 ah,2 int int 21h 21h mov mov dl,0ah dl,0ah int

8、 int 21h 21h mov mov dl,0dh dl,0dh int int 21h 21h ret retmain endpmain endpcode endscode ends end start end start例例 2. C = a + b2. C = a + b汇编后的目汇编后的目标文件只有标文件只有208208字节字节汇编语言的应用汇编语言的应用系统程序、效率代码、系统程序、效率代码、I/OI/O驱动程序驱动程序70%70%以上的系统软件是用汇编语言编写的。以上的系统软件是用汇编语言编写的。 某些快速处理、位处理、访问硬件设备等某些快速处理、位处理、访问硬件设备等 高效程

9、序是用汇编语言编写的。高效程序是用汇编语言编写的。 高级绘图程序、视频游戏程序一般是用汇高级绘图程序、视频游戏程序一般是用汇 编语言编写的编语言编写的。汇编语言广泛应用于如下方面:汇编语言广泛应用于如下方面:高级语言编译程序的编制;高级语言编译程序的编制;中断处理程序中断处理程序的编制的编制;计算机内部设备的驱动程序的编制;计算机内部设备的驱动程序的编制;控制,指挥和监制等实时处理程序的计算控制,指挥和监制等实时处理程序的计算机系统的开发机系统的开发目标:目标: 了解汇编语言的特性及其编程技术,了解汇编语言的特性及其编程技术, 建立起建立起“机器机器”和和“程序程序”、“空间空间”和和 “ “

10、时间时间”的概念。的概念。建议:建议: 充分注意充分注意“汇编汇编”课实践性强的特点,课实践性强的特点, 多读程序多读程序, ,多写程序多写程序, ,多上机调试程序多上机调试程序, , 熟悉熟悉PCPC机的编程结构,机的编程结构, 掌握汇编语言及其程序设计的基本概掌握汇编语言及其程序设计的基本概 念、方法和技巧念、方法和技巧。参考资料参考资料1.80X861.80X86汇编语言程序设计汇编语言程序设计沈美明沈美明 温冬婵温冬婵 清华大学出版社清华大学出版社2.IBM PC 2.IBM PC 汇编语言与程序设计汇编语言与程序设计 PETER ABEL PETER ABEL 编著编著 第第4 4版

11、版 清华大学出版社清华大学出版社.PRENTICE HALL.PRENTICE HALL第第5 5版版 人民邮电出版社人民邮电出版社3. IBM PC 3. IBM PC 汇编语言与程序设计例题习题集汇编语言与程序设计例题习题集 温冬婵温冬婵 沈美明沈美明 清华大学出版社清华大学出版社第第1章章 基基 础础 知知 识识 学习内容:学习内容: 数制数制 数制之间的转换数制之间的转换 运算运算 数和字符的表示数和字符的表示学习目标:了解计算机中数和字符表示方法;学习目标:了解计算机中数和字符表示方法;了解不同基数的数之间的转换方法;了解不同基数的数之间的转换方法;熟悉计算机中补码数的算术运算和逻辑

12、运算规则;熟悉计算机中补码数的算术运算和逻辑运算规则;预预 备备 知知 识识存储容量存储容量1K = 1024 = 210 (Kilo) 1M = 1024K = 220 (Mega) 1G = 1024M = 230 (Giga)1个二进制位:bit (比特)8个二进制位:Byte (字节) 1Byte = 8bit2个字节: Word (字) 1Word = 2Byte = 16bit1. 数数 制制 数数 制制 基基 数数 数数 码码 二进制二进制 Binary 2 0, 1 八进制八进制 Octal 8 0, 1, 2, 3, 4, 5, 6, 7 十进制十进制 Decimal 10

13、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二进制二进制: 基数为2,逢二进一 11012 = 12 3 + 12 2 + 12 0 = 1310十六进制十六进制:基数为16,逢十六进一 1001, 0001, 1000, 0111 9 1 8 7 = 9 16 3 + 1 16 2 + 8 16 1 + 7 16 02. 数制之间的转换数制之间的转换 二进制二进制 十六进制十六进制 十进制十进制 二进制二进制 十进制十进制 十六进制十六进制

14、降幂法降幂法 除法除法 二进制二进制 十六进制十六进制 0011 0101 1011 1111 3 5 B F 0011,0101,1011,1111B = 35BFH A 1 9 C 1010 0001 1001 1100 A19CH = 1010,0001,1001,1100B 1011B = 23+21+20=11D 降幂法 除法 例例: 27D = ? B 27 11 3 3 1 - - - - 2n 16 8 4 2 1 1 1 0 1 1 27D = 11011B 二进制二进制 十进制十进制 十进制转换成R进制 一个任意的十进制数可以由整数部分 和小数部分构成,若设整数部分为M1,

15、 小数部分为M2。 则整数部分为: (M1)10=an-1Rn-1+an-2Rn-2+a2R2+a1R+a0 我们将这种方法取名为除以R取余法, 逆序排列。 其中R为基数。 小数部分为: (M2)10=a-1R-1+a-2R-2+a-mR-m 我们将这种方法取名为乘以R取整法,顺序排列。 【例】 将十进制数10.375转换成二进 制数(R=2)。 解:将十进制数10.375的整数部分和小数 部分分别转换。 整数部分转换采用除以R取余法(在本例中R=2) 2 10 余数 对应二进制数码(数符) 2 5 0 a0 2 2 1 a1 2 1 0 a2 0 1 a3 于是(10)10 = (1010)

16、2 小数部分采用乘以R取整法(在本例中R=2) 整数部分 对应二进制数码(数符) 0.3752=0.75 0 a-1 0.752=1.5 1 a-2 0.52=1.0 1 a-3 剩余误差e=0 于是 (0.375)10=(.011)2+e=(.011)2 最后得到 (10.375)2=(1010.011)2 十六进制十六进制 十进制十进制 BF3CH = 11163 +15162 +3161 +12160 = 48956D 降幂法 除法 例例:399D = ? H 399 143 15 399/1624/161/16 0 - - - 16n 256 16 1 F 8 1 1 8 F 399D

17、 = 18FH 算术运算算术运算 二进制数:二进制数:逢二进一逢二进一 借一为二借一为二 加法规则 乘法规则 0 + 0 = 0 0 0 = 0 0 + 1 = 1 0 1 = 0 1 + 0 = 1 1 0 = 0 1 + 1 = 0 (进位1) 1 1 = 13. 运算(算术运算和逻辑运算)运算(算术运算和逻辑运算)0 5 C 3 H3 D 2 5 H4 2 E 8 H3 D 2 5 H0 5 C 3 H3 7 6 2 H1 11 1十六进制数:十六进制数:逢十六进一逢十六进一 借一为十六借一为十六 逻辑运算(逻辑运算(按位操作按位操作)“与与”运算(运算(AND) “或或”运算(运算(O

18、R) A B AB A B AB 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1“非非”运算(运算(NOT) “异或异或”运算(运算(XOR) A A A B AB 0 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0例例:X=00FFH Y=5555H,求Z=XY= ? X= 0000 0000 1111 1111 B Y= 0101 0101 0101 0101 B Z= 0101 0101 1010 1010 B Z=55AAH4. 数和字符的表示数和字符的表示 计算机中正负计算机中正负数的表示数的表示 7 6 5 4 3 2 1

19、 0符号位符号位 数值位数值位假设机器字长字长为16位:符号位符号位 = 0 正数正数 数值位数值位 = 1 负数负数15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0假设机器字长字长为8位:H.O.ByteH.O.ByteL.O.ByteL.O.ByteH.O.NibbleH.O.NibbleL.O.NibbleL.O.Nibble数的常用表示法数的常用表示法 原码原码 反码反码 补码补码原码表示法原码表示法:符号:符号 + 绝对值绝对值例:n = 8bit +3原码 = 0 000,0011 = 03H - 3原码 = 1 000,0011 = 83H +0原码 =

20、 0 000,0000 = 00H - 0原码 = 1 000,0000 = 80H 0 的表示不惟一反码表示法反码表示法:正数的反码同原码,负数的反码数值位与原码相反正数的反码同原码,负数的反码数值位与原码相反例:n = 8bit +5反码 = 0 000,0101 = 05H - 5反码 = 1 111,1010 = FAH +0反码 = 0 000,0000 = 00H - 0反码 = 1 111,1111 = FFH 0 的表示不惟一例: 机器字长8位,- 46补码 = ? 46补码 = 0 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 =

21、 D2H 机器字长16位,- 46补码 = FFD2H +0补码 = 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 = - 0补码 0 的表示的表示惟一按位求反按位求反末位加一末位加一按位求反按位求反末位加一末位加一补码补码(Twos Complement)表示法:表示法:正数的补码:正数的补码: 同原码负数的补码负数的补码:(1)写出与该负数相对应的正数的补码 (2)按位求反 (3)末位加一 十进制 二进制 十六进制 十进制 十六进制 n=8 n=16 +127 0111 1111 7F +32767 7FFF +126 0111 1110 7E +32766 7FFE . . . +2 0000 0010 02 +2 0002 +1 0000 0001 01 +1 0001 0 0000 0000 00 0 0000 -1 1111 1111 FF -1 FFFF -2 1111 1110 FE -2 FFFE . . .-126 1000 0010 82 -32766 8002-127 1000 0001 81 -32767 8001-128 1000 0000 80 -32768 8000n位二进

温馨提示

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

评论

0/150

提交评论