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

下载本文档

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

文档简介

IBM—PC汇编语言程序设计(第2版)主讲教师:罗江琴计算机语言的发展机器语言FORTRANBASICCOBOLPASCALC/C++JAVA...汇编语言高级语言

汇编语言是介于计算机能直接理解的机器语言与用户容易理解的高级语言之间的一种语言。它除了有与代码指令一一对应的符号指令外,还增加了专用于定义变量,常量,符号,过程,分配存储空间,定位程序起始地址等一系列称之为伪指令的符号指令。汇编语言概述

采用高级语言编写的程序,机器是不能直接执行的,需要由编译程序或解释程序将他翻译成对应的机器语言程序,机器才能接受。而这种机器语言程序往往比较冗长,占用存储空间较大,执行起来速度慢,但能够直接利用机器硬件系统的许多特性,如寄存器,标志位等。

同高级语言比较,它更接近机器语言,更能全面的反映计算机硬件的功能特点。同机器语言比较,它易于阅读,编写和修改程序。因此,使用汇编语言可编写出运行速度快,占存储空间少,能充分利用硬件资源,发挥计算机效能并能进行精确控制的程序。汇编语言是面向机器的语言,故它将因计算机机型的不同而异,但用汇编语言进行程序设计的基本概念,基本技巧和基本方法是普遍适用的。我们选择目前国内最广泛使用的IBMPC作为基础讲授。其他机型同学们可触类旁通。汇编语言的特点

面向机器的低级语言,通常是为特定的计算机或计算机系列专门设计的。保持了机器语言的优点,具有直接和简捷的特点。可有效地访问、控制计算机的各种硬件设备,

如磁盘、存储器、CPU、I/O端口等。目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。经常与高级语言配合使用,应用十分广泛。

#include"stdafx.h"#include"stdio.h"

int

main(int

argc,char*argv[]){inta,b,c;a=1; b=2; c=a+b;

printf(“c=%d\n",c); return0;}编程实现c=a+b,并在屏幕上显示出结果。例1编译后的目标文件达到3.59KBdatasegmentadb?bdb?cdb?stringdb'c=$'dataendscodesegmentmainprocfarassumecs:code,ds:data,es:datastart:

pushdssubax,axpushax

movax,data

mov

ds,ax

mov

es,ax

mova,1

movb,2

moval,aaddal,b

movc,al

leadx,string

movah,09

int21h

addc,30h

movdl,c

movah,2

int21h

movdl,0ah

int21h

movdl,0dh

int21hretmainendpcodeendsendstart例2.C=a+b汇编后的目标文件只有208字节汇编语言的应用系统程序、效率代码、I/O驱动程序

70%以上的系统软件是用汇编语言编写的。某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。高级绘图程序、视频游戏程序一般是用汇编语言编写的。汇编语言广泛应用于如下方面:高级语言编译程序的编制;中断处理程序的编制;计算机内部设备的驱动程序的编制;控制,指挥和监制等实时处理程序的计算机系统的开发目标:

●了解汇编语言的特性及其编程技术,

●建立起“机器”和“程序”、“空间”和“时间”的概念。建议:

●充分注意“汇编”课实践性强的特点,

●多读程序,多写程序,多上机调试程序,●熟悉PC机的编程结构,

●掌握汇编语言及其程序设计的基本概念、方法和技巧。参考资料1.80X86汇编语言程序设计 沈美明温冬婵清华大学出版社2.IBMPC汇编语言与程序设计

PETERABEL编著 第4版清华大学出版社.PRENTICEHALL

第5版人民邮电出版社3.IBMPC汇编语言与程序设计例题习题集温冬婵沈美明清华大学出版社第1章基础知识

学习内容:

数制

数制之间的转换

运算

数和字符的表示学习目标:了解计算机中数和字符表示方法; 了解不同基数的数之间的转换方法; 熟悉计算机中补码数的算术运算和逻辑运算规则;预备知识存储容量1K=1024=210(Kilo)1M=1024K=220

(Mega)1G=1024M=230(Giga)1个二进制位:bit(比特)8个二进制位:Byte(字节)1Byte=8bit2个字节:Word(字)

1Word=2Byte=16bit1.数制数制基数数码

二进制Binary20,1

八进制Octal80,1,2,3,4,5,6,7

十进制Decimal100,1,2,3,4,5,6,7,8,9

十六进制Hexadecimal160,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F二进制:基数为2,逢二进一

11012=1×23+1×22+1×20=1310十六进制:基数为16,逢十六进一

1001,0001,1000,01119187=9×163+1×162+8×161+7×1602.数制之间的转换二进制十六进制十进制二进制十进制十六进制降幂法除法

二进制十六进制

0011010110111111

35BF∴

0011,0101,1011,1111B=35BFH

A19C

1010000110011100∴A19CH=1010,0001,1001,1100B

1011B=23+21+20=11D

降幂法除法

例:27D=?B2711331----2n16842111011

∴27D=11011B

二进制十进制十进制转换成R进制一个任意的十进制数可以由整数部分和小数部分构成,若设整数部分为M1,小数部分为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)210余数对应二进制数码(数符)

250a0221a1210a201a3

于是(10)10=(1010)2小数部分采用乘以R取整法(在本例中R=2)

整数部分对应二进制数码(数符)

0.375×2=0.750a-10.75×2=1.51a-20.5×2=1.01a-3

剩余误差e=0

于是(0.375)10=(.011)2+e=(.011)2最后得到(10.375)2=(1010.011)2

十六进制十进制

BF3CH=11163+15162+3161+12160

=48956D

降幂法除法

例:399D=?H39914315399/16→24/16→1/16→0---↓↓↓16n256161F81

18F

∴399D=18FH

算术运算

二进制数:逢二进一借一为二加法规则乘法规则

0+0=000=00+1=101=01+0=110=01+1=0(进位1)11=13.运算(算术运算和逻辑运算)05C3H3D25H42E8H+3D25H05C3H3762H-1-1十六进制数:逢十六进一借一为十六

逻辑运算(按位操作)“与”运算(AND)“或”运算(OR)

ABA

BABA

B

000000010011100101111111“非”运算(NOT)

“异或”运算(XOR)

A

A

ABA

B0100010

011101110例:X=00FFHY=5555H,求Z=X

Y=?X=0000000011111111B

Y=0101010101010101B

Z=0101010110101010B

Z=55AAH4.数和字符的表示

计算机中正负数的表示

76543210符号位

数值位假设机器字长为16位:符号位=0正数

数值位

=

1负数1514131211109876543210假设机器字长为8位:H.O.ByteL.O.ByteH.O.NibbleL.O.Nibble数的常用表示法

——原码反码补码原码表示法:符号+绝对值例:n=8bit[+3]原码

=0000,0011=03H[-3]原码

=1000,0011=83H[+0]原码

=0000,0000=00H[-0]原码

=1000,0000=80H0的表示不惟一反码表示法:正数的反码同原码,负数的反码数值位与原码相反例:n=8bit[+5]反码

=0000,0101=05H[-5]反码

=1111,1010=FAH[+0]反码

=0000,0000=00H[-0]反码

=1111,1111=FFH0的表示不惟一例:机器字长8位,[-46]补码=?[46]补码=001011101101000111010010=D2H

机器字长16位,[-46]补码=FFD2H

[+0]补码=000000001111111100000000=[-0]补码0的表示惟一按位求反末位加一按位求反末位加一补码(Two’sComplement)表示法:正数的补码:同原码负数的补码:(1)写出与该负数相对应的正数的补码

(2)按位求反

(3)末位加一十进制二进制十六进制十进制十六进制

n=8n=16+127011111117F+327677FFF+126011111107E+327667FFE......……...+20000001002+20002+10000000101+100010000000000000000-111111111FF-1FFFF-211111110FE-2FFFE......……...-1261000001082-327668002-1271000000181-327678001-1281000000080-327688000n位二进制补码的表数范围:

-2n-1≤N≤2n-1-1无符号整数的表数范围:

0≤N

≤2n-1

补码的加法和减法:求补运算

:对一个二进制数按位求反、末位加一

[X]补码

温馨提示

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

评论

0/150

提交评论