80X86汇编语言电子教案(1-全部)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

—白燕—汇编语言程序设计白燕解放军信息工程大学信息工程学院计算机与网络攻防系—白燕—课堂教学60学时上机实践10学时IBMPC汇编语言程序设计沈美明等清华大学出版社199180X86汇编语言程序设计教程杨季文等清华大学出版社1998IBM-PC汇编语言程序设计第2版沈美明温冬婵编著清华大学出版社高级语言程序设计学时参考书教材先修课程—白燕—1.1汇编语言概述一计算机语言发展简史一计算机语言发展简史机器语言汇编语言高级语言FORTRANBASICPASCALC/C++JAVAScript…...第一章基础知识—白燕—机器语言真正唯一能让CPU直接识别的语言它是用二进制编码表示的机器指令的集合及一组使用机器指令的规则1.CPU能直接识别并遵照执行的指令称为机器指令2.用机器语言描述的程序称为目的程序或目标程序它们能被CPU直接执行3.对于不同类型的CPU其机器指令集不尽相同例1用8086机器语言实现简单加法(2200H)+(2201H)结果存放在(2202H)中的程序片段用16进制表示A00022将(2200H)中的数送到AL中02060122将(AL)+(2201H)和数送到AL中A20222将(AL)送回(2202H)中—白燕—优点便于阅读易学易用不涉及硬件具有通用性缺点目标代码冗长占用内存多从而执行时间长效率不高不能对某些硬件进行操作高级语言面向人的语言有多种类型汇编语言是一种符号语言与机器语言一一对应使用助记符表示相应的操作并遵循一定的语法规则与机器语言有类似的优缺点但比机器语言更易于为人们所理解用汇编语言书写的程序成为汇编语言源程序优点目标程序小执行速度快效率高缺点表达的意义不直观编写阅读调试较困难—白燕—下面是两个小例子例2是用高级语言VC++编写的例3是用汇编语言编写的它们完成相同的功能即把ab的内容相加赋给c并在屏幕上显示出来#includestdafx.h#includestdio.hintmain(intargc,char*argv[]){inta,b,c;a=1;b=2;c=a+b;printf(“c=%d\n,c);return0;}例2编译后的目标文件达到3.59KB—白燕—datasegmentadb?bdb?cdb?stringdb'c=$'dataendscodesegmentmainprocfarassumecs:code,ds:data,es:datastart:pushdssubax,axpushaxmovax,datamovds,axmoves,ax汇编后的目标文件只有208字节例3mova,1movb,2moval,aaddal,bmovc,alleadx,stringmovah,09int21haddc,30hmovdl,cmovah,2int21hmovdl,0ahint21hmovdl,0dhint21hretmainendpcodeendsendstart—白燕—用高级语言和汇编语言书写的程序均不能被CPU直接识别并执行这些程序通称为源程序因此所有源程序都必须翻译成目标程序后才能被CPU执行高级语言源程序编译解释汇编语言程序汇编目标程序相应编译器或解释程序汇编程序汇编程序则专门负责完成将汇编语言源程序翻译成目标程序高级语言程序汇编语言程序与机器语言程序的关系—白燕—二二汇编语言相对于高级语言的特点汇编语言相对于高级语言的特点•汇编语言是面向机器的语言它的指令语句与机器指令一一对应是机器指令的符号表示因此对于不同类型的CPU要求使用不同的汇编语言和汇编程序•汇编语言保持了机器语言的优点具有直接和简捷的特点•汇编语言可有效地访问控制计算机的各种硬件设备如磁盘存储器CPUI/O端口等•汇编语言程序目标代码简短占用内存少执行速度快是高效的程序设计语言•汇编语言程序编写繁琐•汇编语言程序调试困难单条指令功能有限通用集成编程环境少—白燕—汇编语言源程序汇编程序连接程序调试程序由编辑软件建立MASM.EXETASM.EXELINK.EXETLINK.EXEDEBUG.EXETD.EXECV.EXE汇编语言程序设计计算机实现过程汇编语言可以充分发挥机器硬件的功能并提高编程质量—白燕—三汇编语言的应用三汇编语言的应用•对软件的执行时间或存储容量有较高要求的场合例如实时控制系统智能化仪器仪表及高性能软件•需要提高大型软件性能的场合例如某些快速处理位处理等高效程序用汇编语言编写的•与硬件关系密切要直接有效控制硬件的场合•其它不适合高级语言的场合•经常与高级语言配合使用适度地追求“时空”效率是否采用汇编语言编程主要权衡软件的开发时间及软件的质量—白燕—四为什么要学习汇编语言四为什么要学习汇编语言•汇编语言是低级语言它能为程序员提供最广阔的编程舞台•学好汇编语言就能够站在计算机运行程序的角度从计算机硬件的角度了解认识计算机系统它是嫁接软件和硬件的桥梁•学好汇编语言对今后可能涉及的计算机特别是单片机系统开发有极大帮助—白燕—五如何学好汇编语言五如何学好汇编语言在接下来的学习过程中同学们可能会发现学习汇编语言程序设计和学习高级语言程序设计有所不同会发觉在相当长时期不能接触完整的汇编程序更不能编写自己的应用程序这是因为我们要为今后的编程作一个充分的知识储备例如CPU的编程结构指令系统寻址方式指令功能和操作对象伪指令格式等所以希望同学们要有一定耐心把每节课内容学到手在理解的基础上记忆需要强调的是更重要的是记忆换句话说对于正确的东西暂时不能理解的也要记下来因为疑团总是在后面解开—白燕—六学习目标及要求六学习目标及要求1.掌握汇编语言程序设计的基本概念2.了解以Intel系列微处理器为基础的PC机的基本结构编程结构3.掌握Intel80X86CPU的指令系统及寻址方式4.学会使用DOS和BIOS功能调用及高级汇编语言技术5.掌握使用汇编语言设计编写调试和运行程序的方法汇编语言预备知识的复习—白燕—1.2数据的表示和类型通过前面的讲解我们知道计算机只能识别以二进制形式存在的机器语言无论是高级语言还是汇编语言最终都要转换为机器语言即二进制形式而且计算机内部数据的存放和运算都是二进制形式要学习汇编语言必须首先了解二进制而我们的惯性思维是十进制本节我们要复习1进位计数制2不同基数的数之间的转换特别是二进制十进制二进制十六进制之间的转换3不同基数的数的运算4机器数的表示重点掌握有符号数的补码表示—白燕—•十进制基数为10逢十进一12.34=1101+2100+310-1+410-2•二进制基数为2逢二进一11012=123+122+120=1310•十六进制基数为16逢十六进一1001,0001,1000,01119187=9163+1162+8161+7160•八进制基数为8逢八进一一个r进制数anan-1…a1a0·b1b2…bm其含义为an·rn+an-1·rn-1+…a1·r1+a0·r0+b1·r-1+b2·r-2+…bm·r-mR为基数数码一数制一数制权—白燕—例同样的一串数字101若表示的数制不一样其含义也不一样如下十进制数101D=二进制数101B=八进制数101O=那么如何区分它们呢例若要写一个八进制数197对否现对常用进制数归纳总结如下—白燕—计算机不用0~r-1(r为自然数)rr进制0a83h84aH09,a,b,c,d,e,f,A,B,C,D,E,F16十六进制Hexadecimal892或892D0910十进制Decimal734O078八进制Octal10001101B012二进制Binary书写实例数码基数数制在计算机中为了区分不同数制的数据采用以下方法十进制数-----后跟D二进制数-------后跟B八进制数-----后跟O十六进制数----后跟H—白燕—二进制转换二进制转换•二进制十进制直接计算求和1011B=11D1降幂法例27D=?B2711331-↓-↓-↓-↓-↓1684211101127D=11011B2除法转换整数部分由除法得到的余数顺序产生由低到高的各位数码直至商为0乘法转换小数部分由乘法得到整数顺序产生由高到低的各位数码直至小数部分为0—白燕—•十六进制二进制例如10011010110111111↓↓↓↓35BF0011,0101,1011,1111B=35BFH2A19C↓↓↓↓10100001100111000A19CH=1010,0001,1001,1100B二进制从低位到高位每4位一组用十六进制数码表示反之十六进制每位扩展为4位二进制数码十六进制与二进制的转换表见书P4表1.1—白燕—•算术运算二进制加法规则乘法规则0+0=00×0=00+1=10×1=01+0=11×0=01+1=0进位11×1=1十六进制05C3H3D25H+3D25H-05C3H42E8H3762H三运算三运算—白燕—•逻辑运算按位操作“非”运算NOTAA0110“与”运算ANDABA∧B000010100111“或”运算ORABA∨B000011101111“异或”运算XORABA∀B000011101110—白燕—例X=00FFHY=5555H求Z=X∀Y=?X=0000000011111111B∀Y=0101010101010101BZ=0101010110101010B∴Z=55AAH—白燕—四数机器数的表示四数机器数的表示计算机中的数用二进制表示分为无符号数和有符号数有符号数的符号也用二进制位表示例如8位二进制无符号数:76543210数值位符号位有符号数的最高位符号位=0表示正数符号位=1表示负数76543210符号位数值位8位二进制有符号数—白燕—1有符号数的补码表示1正数的补码形式绝对值的二进制数形式符号位02负数的补码形式2n绝对值的补码n为二进制数的位数80X86中为机器字长快速得到负数补码的两种方法a先得出其绝对值对应的二进制形式然后对该二进制数按位变反最后再将变反后的结果加1b先得出其绝对值对应的二进制形式然后将该二进制数最右边为1的位不变其所有左边位按位变反—白燕—例机器字长8位[-46]补码=1[46]补码=0010111011010001110100100D2H2[46]补码=00101110110100100D2H所以[-46]补码=11010010B0D2H按位求反末位加一特殊值的补码特殊值的补码[-1]补码=11111111=0FFH[-128]补码=10000000=80H[-0]补码=00000000=00H按位变反最右的1—白燕—例写出下列数据的补码表示1[-00111100B]补=2[-39H]补=3[26]补=4[-19D]补=例试比较两个二进制数01111111B和11111111B的大小—白燕—例写出下列数据的补码表示1[-00111100B]补=11000100B2[-39H]补=[-00111001B]补=11000111B3[26]补=[00011010B]补=00011010B4[-19D]补=[-00010011]补=11101101B例试比较两个二进制数01111111B和11111111B的大小解有符号数01111111B11111111B无符号数:01111111B11111111B—白燕—2数的符号扩展无符号数只要在最高位前添足够的0即可有符号数补码形式表示进行符号位的扩展时在最高位前添足符号位正数添0负数添1例如[-46]补码0D2H8位将0D2H视为有符号数则其符号扩展为FFD2H16位将0D2H视为无符号数则其符号扩展为00D2H16位—白燕—3数的表示范围n位有符号数补码的表示范围-2n-1≤N≤2n-1-1n=8-128≤N≤127n=16-32768≤N≤32767n=32-232-1≤N≤232-1-1n位无符号数表示范围0≤N≤2n-1n=80≤N≤255n=160≤N≤65535n=320≤N≤232-1—白燕—4补码的加法和减法补码表示的数具有以下特性=[-X]补码求补求补=[X]补码[X]补码例:一个二进制序列:11001000,则其表示哪一个数的补码?例如[117]补=0075H[

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功