




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,教学内容,第1章基础知识第2章寄存器第3章寄存器(内存访问)第4章第一个程序第5章BX和loop指令第6章包含多个段的程序第7章更灵活的定位内存地址的方法第8章数据处理的两个基本问题第9章转移指令的原理第10章CALL和RET指令第11章标志寄存器第12章内中断第13章int指令,1,2,第1章基础知识,1.1机器语言1.9数据总线1.2汇编语言的产生1.10控制总线1.3汇编语言的组成1.11内存地址空间(概述)1.4存储器1.12主板1.5指令和数据1.13接口卡1.6存储单元1.14各类存储器芯片1.7CPU对存储器的读写1.15内存地址空间1.8地址总线,2,检测点1.1(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。(2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。(3)1KB的存储器可以存储8192(213)个bit,1024个Byte。(4)1GB是1073741824(230)个Byte、1MB是1048576(220)个Byte、1KB是1024(210)个Byte。(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。(7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。(8)在存储器中,数据和程序以二进制形式存放。,3,第2章寄存器(CPU工作原理),2.1通用寄存器2.2字在寄存器中的存储2.3几条汇编指令2.4物理地址2.516位结构的CPU2.68086CPU给出物理地址的方法,2.7“段地址16+偏移地址=物理地址”的本质含义2.8段的概念2.9段寄存器2.10CS和IP2.12代码段,4,检测点2.1(1)写出每条汇编指令执行后相关寄存器中的值。movax,62627AX=F4A3Hmovah,31HAX=31A3Hmoval,23HAX=3123Haddax,axAX=6246Hmovbx,826CHBX=826CHmovcx,axCX=6246Hmovax,bxAX=826CHaddax,bxAX=04D8Hmoval,bhAX=0482Hmovah,blAX=6C82Haddah,ahAX=D882Haddal,6AX=D888Haddal,alAX=D810Hmovax,cxAX=6246H,5,检测点2.1(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。movax,2AX=2addax,axAX=4addax,axAX=8addax,axAX=16,6,检测点2.2(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为1001H,最大为2000H。当段地址给定为1001H以下和2000H以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。解题过程:物理地址SA*16+EA20000hSA*16+EASA=(20000h-EA)/16=2000h-EA/16EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值,7,检测点2.2(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为0010H到1000FH。解题过程:物理地址SA*16+EAEA的变化范围为0hffffh物理地址范围为(SA*16+0h)(SA*16+ffffh)现在SA=0001h,那么寻址范围为(0001h*16+0h)(0001h*16+ffffh)=0010h1000fh,8,第3章寄存器(内存访问),3.1内存中字的存储3.2DS和address3.3字的传送3.4mov、add、sub指令3.5数据段3.6栈3.7CPU提供的栈机制3.8栈顶超界的问题3.9push、pop指令3.10栈段,9,检测点3.1(1)在DEBUG中,用D0:0lf查看内存,结果如下:0000:00007080F030EF6030E2-00808012662022600000:00106226E6D6CC2E3C3B-ABBA000026066688下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值movax,1movds,axmovax,0000ax=2662Hmovbx,0001bx=E626Hmovax,bxax=E626Hmovax,0000ax=2662Hmovbx,0002bx=D6E6Haddax,bxax=FD48Haddax,0004ax=2C14Hmovax,0ax=0moval,0002ax=00e6Hmovbx,0bx=0movbl,000cbx=0026Haddal,blax=000CH,10,检测点3.1(2)内存中的情况如图3.6所示各寄存器的初始值:cs=2000h,ip=0,ds=1000h,ax=0,bx=0;写出CPU执行的指令序列(用汇编指令写出)。写出CPU执行每条指令后,CS、IP和相关寄存器的数值。再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?,11,12,检测点3.2(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。movax,1000Hmovds,axmovax,2000Hmovss,axmovsp,10hpush0push2push4push6push8pushApushCpushE,13,检测点3.2(2)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。movax,2000Hmovds,axmovax,1000Hmovss,axmovsp,0popepopcpopapop8pop6pop4pop2pop0,14,第4章第一个程序,4.1一个源程序从写出到执行的过程4.2源程序4.3编辑源程序4.4编译4.5连接4.6以简化的方式进行编译和连接4.71.exe的执行4.8可执行文件中的程序装入内存并运行的原理4.9程序执行过程的跟踪,15,第五章BX和loop指令,5.1bx5.2Loop指令5.3在debug中跟踪用loop指令实现的循环程序5.4debug和汇编编译器masm对指令的不同处理5.5loop和bx的联合应用5.6段前缀5.7一段安全的空间5.8段前缀的使用,16,第六章包含多个段的程序,6.1在代码段中使用数据6.2在代码段中使用栈6.3将数据、代码、栈放入不同的段,17,检测点6.1(1)下面的程序实现依次用内存0:00:15单元中的内容改写程序中的数据,完成程序:assumecs:codesgcodesgsegmentdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:movax,0movds,axmovbx,0movcx,8s:movax,bxmovcs:bx,axaddbx,2loopsmovax,4c00hint21hcodesgendsendstart,18,检测点6.1(2)下面的程序实现依次用内存0:00:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:assumecs:codesgcodesgsegmentdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw0,0,0,0,0,0,0,0,0,0start:movax,codesg;或movax,csmovss,axmovsp,24h;或movsp,36movax,0movds,axmovbx,0movcx,8s:pushbxpopcs:bx;或popss:bxaddbx,2loopsmovax,4c00hint21hcodesgendsendstart,19,第七章更灵活的定位内存地址的方法,7.1and和or指令7.4大小写转换的问题7.58086的寻址方式,20,第八章数据处理的两个基本问题,8.1bx、si、di、bp8.2机器指令处理的数据所在位置8.3汇编语言中数据位置的表达8.4寻址方式8.5指令要处理的数据有多长?8.7div指令8.8伪指令dd8.9dup,21,第九章转移指令的原理,9.1操作符offset9.2jmp指令9.3依据位移进行转移的jmp指令9.4转移的目的地址在指令中的jmp指令9.5转移地址在寄存器中的jmp指令9.6转移地址在内存中的jmp指令9.7jcxz指令9.8loop指令9.9根据位移进行转移的意义9.10编译器对转移位移超界的检测,22,检测点9.1(1)程序如下。assumecs:codedatasegmentdw2dup(0)dataendscodesegmentstart:movax,datamovds,axmovbx,0jmpwordptrbx+1codeendsendstart若要使jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?答案db3dup(0)答案dw2dup(0)答案dd0,23,检测点9.1(1)程序如下。assumecs:codedatasegmentdd12345678hdataendscodesegmentstart:movax,datamovds,axmovbx,0movbx,bx;或movbx,wordptr0;或movbx,offsetstartmovbx+2,cs;或movbx+2,codejmpdwordptrds:0codeendsendstart补全程序,使用jmp指令执行后,CS:IP指向程序的第一条指令。,24,检测点9.1(3)用Debug查看内存,结果如下:2000:1000BE0006000000.则此时,CPU执行指令:movax,2000hmoves,axjmpdwordptres:1000h后,(cs)=0006H,(ip)=00BEH,25,检测点9.2补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。assumecs:codecodesegmentstart:movax,2000hmovds,axmovbx,0s:movch,0movcl,bxjcxzok;当cx=0时,CS:IP指向OKincbxjmpshortsok:movdx,bxmovax,4c00hint21hcodeendsendstart,26,检测点9.3补全编程,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。assumecs:codecodesegmentstart:movax,2000hmovds,axmovbx,0s:movcl,bxmovch,0inccxincbxloopsok:decbxmovdx,bxmovax,4c00hint21hcodeendsendstart,27,第十章CALL和RET指令,10.1ret和retf10.2call指令10.3依据位移进行转移的call指令10.4转移的目的地址在指令中的call指令10.5转移的目的地址在寄存器中的call指令10.6转移的目的地址在内存中的call指令10.7call和ret的配合使用10.8mul指令10.9模块化程序设计10.10参数和结果传递的问题10.11批量数据的传递10.12寄存器冲突的问题,28,检测点10.1补全程序,实现从内存1000:0000处开始执行指令。assumecs:codestacksegmentdb16dup(0)stackendscodesegmentstart:movax,stackmovss,axmovsp,16movax,1000hpushaxmovax,0pushaxretfcodeendsendstart,29,检测点10.2下面的程序执行后,ax中的数值为多少?内存地址机器码汇编指令执行后情况1000:0b80000movax,0ax=0ip指向1000:31000:3e80100callspopipip指向1000:71000:640incax1000:758s:popaxax=6,30,检测点10.3下面的程序执行后,ax中的数值为多少?内存地址机器码汇编指令执行后情况1000:0b80000movax,0ax=0,ip指向1000:31000:39a09000010callfarptrspopcs,popip,ip指向1000:91000:840incax1000:958s:popaxax=8haddax,axax=10hpopbxbx=1000haddax,bxax=1010h,31,检测点10.4下面的程序执行后,ax中的数值为多少?内存地址机器码汇编指令执行后情况1000:0b80600movax,6ax=6,ip指向1000:31000:3ffd0callaxpopip,ip指向1000:61000:540incax1000:658movbp,spbp=sp=fffehaddax,bpax=6+ds:(fffeh)=6+5=0bh,32,检测点10.5(1)下面的程序执行后,ax中的数值为多少?assumecs:codestacksegmentdw8dup(0)stackendscodesegmentstart:movax,stackmovss,axmovsp,16movds,axmovax,0callwordptrds:0ehincaxincaxincaxmovax,4c00hint21hcodeendsendstart,33,检测点10.5(2)下面的程序执行后,ax和bx中的数值为多少?assumecs:codesgstacksegmentdw8dup(0)stackendscodesgsegmentstart:movax,stackmovss,axmovsp,10hmovwordptrss:0,offsets;(ss:0)=1ahmovss:2,cs;(ss:2)=cscalldwordptrss:0;cs入栈,ip=19h入栈,转到cs:1ah处执行指令;(ss:e)=cs,(ss:c)=ipnops:movax,offsets;ax=1ahsubax,ss:0ch;ax=1ah-(ss:0ch)=1ah-19h=1movbx,cs;bx=cs0c5bhsubbx,ss:0eh;bx=cs-cs=0movax,4c00hint21hcodesgendsendstart,34,第十一章标志寄存器,11.1ZF标志11.2PF标志11.3SF标志11.4CF标志11.5OF标志11.6adc指令11.7sbb指令11.8cmp指令11.9检测比较结果的条件转移指令11.10DF标志和串传送指令11.11pushf和popf11.12标志寄存器在Debug中的表示,35,检测点11.1写出下面每条指令执行后,ZF、PF、SF、等标志位的值。subal,alal=0hZF=1PF=1SF=0moval,1al=1hZF=1PF=1SF=0pushaxax=1hZF=1PF=1SF=0popbxbx=1hZF=1PF=1SF=0addal,blal=2hZF=0PF=0SF=0addal,10al=12hZF=0PF=1SF=0mulalax=144hZF=0PF=1SF=0,36,检测点11.2写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。alCFOFSFZFPFsubal,al0h/00000000b00011moval,10h10h/00010000b00011addal,90ha0h/10100000b00101moval,80h80h/10000000b00101addal,80h0h/00000000b11011moval,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业生产过程中的智能优化
- 工作中的自我管理与时间管理技巧
- 工作中的目标管理与效率提升策略
- 工业节能改造项目投资报告
- 工业设计的发展趋势与创新点分析
- 工作休闲两不误-可穿戴设备在办公室和休闲场合的应用研究
- 工程中机电设备安装与调试技术
- 工作流程优化与提高工作效率的策略
- 工厂废水处理的成效及经验分享
- 工程机械的节能减排技术应用研究
- DB11T 581-2021 轨道交通工程防水技术规程
- 专题6.6射影定理专项提升训练(重难点培优)-2022-2023学年九年级数学下册尖子生培优题典(原卷版)
- 2024年冬季N0M世界青少年数学思维研学活动模拟题4年级
- 石材营销渠道的数字化转型
- 驾驶员雇佣协议书
- GB/T 44192-2024政务服务便民热线数据应用指南
- 安徽省池州市贵池区2023-2024学年七年级下学期末历史试卷
- 酒店运营管理 智慧树知到期末考试答案章节答案2024年山东青年政治学院
- (高清版)JTG 3810-2017 公路工程建设项目造价文件管理导则
- 一人出资一人出力合伙协议范本完整版
- 国家基层糖尿病神经病变诊治指南(2024版)
评论
0/150
提交评论