版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IBM-PC汇编语言程序设计计算机科学与工程系AssemblyLanguageProgrammingAssemblyLanguageProgramming引言课程安排1总学时:48学时讲课:36学时,实验:12学时学分:3教科书:8086/8088宏汇编语言程序设计教程(第二版)王正智著电子工业出版社课程考核考试课程成绩计算:平时:5%作业:10%实验:15%考试:60%学习技巧汇编语言难吗???语言类课程学习养成自学的习惯养成上机求证的习惯做一定的练习下面我们开始学习什么是汇编语言?机器特定的编程语言该语言的语句和机器内在语言是一一对应的关系该语言和机器的指令集、系统结构相匹配程序设计的级别机器语言汇编语言高级语言IBM-PC汇编语言针对8086,8088,80186,80286,80386,80486,andPentiumProcessors为什么要学习汇编语言?能够学习到处理器是如何工作的理解计算机的基本系统结构探究数据和指令的内部表述能够创建小巧有效的程序允许程序员绕过高层语言的限制编程有些工作必须用汇编语言完成机器语言数字表示的机器执行的指令集合,被称为处理器指令集处理器能够执行的基本指令的集合每个指令被编码成为数字符号指令可能占用一个或者多个字节每个数字代表一个机器指令IBM-PC机器指令举例00000101borB005h操作码=10110000b含义:拷贝一个字节数据到AL寄存器中字节数据由该指令的第二部分代表:00000101b第1部分软硬件基础知识AssemblyLanguageProgramming编写汇编程序,需要计算机硬件和软件两方面的知识。该部分侧重于最为基础的硬件和软件知识介绍。1数据表示AssemblyLanguageProgramming十进制到二进制的转换109d转换到二进制-循环被2除余数作为数位值直到0为止将余数组合起来第一位余数作为二进制数的最低位109d=1101101b109/2=54r154/2=27r027/2=13r113/2=6r16/2=3r03/2=1r11/2=0r1十六进制数0~9,A,B,C,D,E,F注意:数字以H结尾大家思考:为何引入十六进制数?二进制和十六进制BinaryHex4位一组划分(从最低位开始)最后一组不足4位补0每组对应的数据转换成对应的数字HexBinary相反的方法每个数字展成4bits可以忽略前面的若干的001001110b=4Eh37h=00110111b基本加法Easy!!例如:cccc10101+1111100100HexExample:cc3CF02
+435C9804CB0+0=00+1=11+0=11+1=101+1+1=11WatchCarries基本减法Hexexample:bbFCF02
-435C9B9939bbbbb1101000011
-11010011011011010Aborrowaddssixteen字符数据ASCIIAmericanStandardCodeforInformationInterchange(ASCII)7-bit二进制码表示的128个字符通常占用1字节包括一些控制字符ASCII码的序列称为ASCII字符串注:数字字符‘1’~‘9’的ASCII码值:30~39大家思考:如何将ASCII码值和对应的数字相转换?理解Two’sComplementCode补码的定义:[X]补=(M+X)modM其中:M=2n正数的编码无符号正数表示负数的编码其值加上256后对应的正数编码Codefor+107107d=1101011bcode:01101011(6Bh)Codefor-107-107+256=149149d=10010101bcode:10010101b(95h)大家计算
6Bh+95h=?二进制补码转换c和-c
的二进制补码加和的值等于2的幂8-bitcode:c+(-c)=2816-bitcode:c+(-c)=216(-c) =2n-c =[(2n-1)-c]+1求补码的方法1:(-c)=2n-c求补码的方法2:翻转所有的位加1检验BinaryDec1111,0000,1101-243+0111,0110,1001+18970110,0111,01101654负数解码1111,0000,1101-(0000,1111,0011)-243HexDecimalF23C(-3524)
-2CF0
-11504C54C-15028对F23C解码:1111,0010,0011,1100-(0000,1101,1100,0100)-3524算术进位算术进位+1111110000000101000000011CF=1,OF=0+25251无效+-451有效无符号数有符号数进位CF的设置,由符号位的运算进位0或1产生的。对于无符号数,产生了数据位的进位而无效。算术溢出溢出的两情形:+011110010000101110000100CF=0,OF=1+12111132无效++12111-124有效无符号数有符号数情形1:当符号位有进位输入,而没有进位输出时情形2:当进位输出不是由进位输入产生时+111101101000100101111111CF=1,OF=1无效++246137127无符号数有符号数1+-10-119127无效作业1P11#2#3#6#72IBM-PC硬件AssemblyLanguageProgramming处理器8x86各种处理器的速度,寻址空间,寄存器以及总线数据宽度不同。808616bitsregisters,1MB内存空间,总线8位808816位数据总线8038632位寄存器,32位总线,寻址4GBPentium32位寄存器,64位数据总线Intel8086处理器的结构8086寄存器寄存器–处理器中临时存储数据的地方数据寄存器(16-bit)AX,BX,CX,DX地址寄存器(16-bit)段寄存器:CS,SS,DS,ES指针寄存器:SP,BP,IP变址寄存器:SI,DI状态寄存器flag(16-bit)通用数据寄存器都是用来保存数据的,因此称为通用寄存器但各有用途AX:累加BX:基址CX:计数DX:数据各个寄存器的对应高低字节可单独使用AH,AL,BH,etc.AXBXCXDXAHALBHBLCHCLDHDL高8位低8位内存组织8086寻址范围1MB(220bytes)每个字节的地址从00000h到FFFFFh编码,并且编址是唯一确定的注意:由于各个寄存器为16位,而20位的地址的寻址通过16位的寄存器完成。这是如何进行的呢?100111110010011001001000100000110101110010100010物理地址10000H10001H10002H10003H
10004H10005H数据寻址方式段:偏移量寻址段segment:一个存储区域,起始地址为能够被16整除的地址,即后4位为0(通常不写)偏移量:段范围内的存储单元相对于段起始地址的数量,偏移量的范围从0000H到FFFFH段:偏移量寻址逻辑地址=段地址:偏移地址物理地址=段地址×16+偏移量逻辑地址段地址:偏移地址1000:0000H1000:0001H1000:0002H1000:0003H1000:0004H1000:0005H100111110010011001001000100000110101110010100010物理地址10000H10001H10002H10003H
10004H10005H逻辑地址vs.物理地址16位段地址
16位偏移地址0000+20位物理地址段寄存器代码段CS对应执行的指令,起始地址对应第一条可执行的指令数据段DS对应程序的数据、常量等堆栈段SS对应暂存任何数据,包括子程序所用的数据扩展段ES对应于特殊的数据和操作使用
存储器8KB代码2KB数据256堆栈02000H04800H04000H0200H0400H0480HCSDSSSESCS寄存器和IP寄存器CSregister表示程序代码段的起始地址IP寄存器包含要执行的下一指令的地址的偏移量,和CS寄存器相关联IP寄存器的内容是程序中不能修改的大家思考:某条指令的地址为CS:394BHIP:514H实际的物理地址:?SS寄存器和SP寄存器SS寄存器保存了暂时的数据和地址段的起始地址SP堆栈指针保存了堆栈段的段内的偏移量,也就是堆栈的当前顶部地址上述两者结合起来ES寄存器扩展数据段一般用于字符串操作的寻址,一般和DI寄存器相关联BP和变址寄存器BP为基址寄存器可指定为任何段的偏移量,但缺省指的是堆栈段SI和DI称为变址寄存器作用1:保存相对于任何段的偏移量,但通常缺省保存相对于数据段的偏移量作用2:有时保存相对于数组地址的索引数据标志寄存器标志寄存器保存了当前程序的执行状态1514131211109876543210OFDFIFTFSFZFAFPFCFOF溢出标志DF方向标志SF符号标志IF中断标志ZF零标志TF陷阱标志CF进位标志PF奇偶标志AF辅助进位标志8086的系统启动重置系统状态,执行的第一条指令位于FFFF0HCS=FFFFhIP=0000h其余各个寄存器清零执行ROM中指令,进入BIOS程序的处理系统内存检查初始化中断向量表和相关数据从磁盘中载入操作系统位于磁盘的启动扇区DOS载入执行80x86寄存器80x86的程序可见寄存器组通用寄存器专用寄存器段寄存器
AHAXALBHBXBLCHCXCLDHDXDLSPBP
SIDI
IPFLAGSCSDSSSES8086/8088/80286寄存器EAXEBXECXEDXESPEBPESIEDIEIPEFLAGS
FSGS311615870中断中断:某些事件使得处理器挂起当前的操作,并为引起中断的原因去作一些事情。有些原因是正常的,例如键盘输入请求;有些是非法的,例如除数为0的操作。中断服务程序堆栈StackLIFO数据结构支持PUSH和POP操作作用发生中断处理和过程调用时,保护当前执行的现场;过程返回时,依据堆栈保存的地址继续执行堆栈的构造堆栈是通过堆栈段寄存器和偏移量访问的一段内存区域SS:指向了堆栈的开始地址SP:指向了堆栈的顶部SP:000CSS:0340StackSize:000C动作PUSH:压栈操作,减少SP
POP:出栈操作,增加SPSP:0008SS:0340StackSize:000CPUSHPOPPUSHPUSHsourcesource指的是任何16/32位通用或者段寄存器,或者字/双字的地址PUSHF将标志寄存器的内容压栈动作:SP减去2/4在SS:SP地址存放source数据PUSH举例PUSHAX3C09A4402CFFA2432A0946SP:000807064CSS:0340StackSize:000C3C09A4402CFFA2232A0946SP:000601064CSS:0340AX:0123POPPOPdestinationdestination指的是任何16/32位通用或者段寄存器,或者字/双字的地址POPForPOPFD将标志寄存器的内容出栈,存入标志寄存器动作:将SS:SP地址的数据拷贝到destinationSP加2/4POP举例POPES3C09A4402CFFA2232A0946SP:000801064CSS:03403C09A4402CFFA2232A0946SP:000601064CSS:0340ES:01
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《激光原理》课程教学大纲
- 河北省邢台市重点高中2024-2025学年高三上学期10月月考生物试题含答案
- 2024年代理房源出租出售合同范本
- 培训机构工作汇报
- 从小爱祖国语言活动
- 医院财务管理制度培训
- 口腔种植及护理配合
- 医疗质控交流
- 关于脑部手术
- 传染病防控业务培训
- 墨菲定律(参考课件)
- ZFWG200变速箱及系列驱动桥结构原理及性能介绍讲义课件
- 公路交通情况调查基础知识课件
- 水泥助磨剂简介课件
- 四年级上册英语试题-Unit 4 School单元测试 Join in外研 剑桥英语(含答案)
- 行政执法人员培训基础知识课件
- 中国传统绘画之《千里江山图》教学设计-高中美术人美版(2019)美术鉴赏
- 染色体病总结课件
- 第8章 Q2 8型汽车起重机液压系统课件
- 辽宁省抚顺市药品零售药店企业药房名单目录
- (新版)征信知识竞赛基础题库(500题)
评论
0/150
提交评论