检测点答案PPT课件

上传人:资****亨 文档编号:135361406 上传时间:2020-06-15 格式:PPT 页数:40 大小:177KB
返回 下载 相关 举报
检测点答案PPT课件_第1页
第1页 / 共40页
检测点答案PPT课件_第2页
第2页 / 共40页
检测点答案PPT课件_第3页
第3页 / 共40页
检测点答案PPT课件_第4页
第4页 / 共40页
检测点答案PPT课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《检测点答案PPT课件》由会员分享,可在线阅读,更多相关《检测点答案PPT课件(40页珍藏版)》请在金锄头文库上搜索。

1、 1 1 教学内容 第1章基础知识第2章寄存器第3章寄存器 内存访问 第4章第一个程序第5章 BX 和loop指令第6章包含多个段的程序第7章更灵活的定位内存地址的方法第8章数据处理的两个基本问题第9章转移指令的原理第10章CALL和RET指令第11章标志寄存器第12章内中断第13章int指令 2 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地址总线 3 检测点1 1

2、 1 1个CPU的寻址能力为8KB 那么它的地址总线的宽度为13位 2 1KB的存储器有1024个存储单元 存储单元的编号从0到1023 3 1KB的存储器可以存储8192 2 13 个bit 1024个Byte 4 1GB是1073741824 2 30 个Byte 1MB是1048576 2 20 个Byte 1KB是1024 2 10 个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

3、根 8根 16根 16根 32根 则它们一次可以传送的数据为 1 B 1 B 2 B 2 B 4 B 7 从内存中读取1024字节的数据 8086至少要读512次 80386至少要读256次 8 在存储器中 数据和程序以二进制形式存放 4 第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代码段 5 检测点2 1 1 写出每条汇编指令执行后相关寄存器中的值 movax 626

4、27AX 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 6 检测点2 1 2 只能使用目前学过的汇编指令 最多使用4条指令 编程计算2的4次方 movax 2AX 2addax axAX 4addax axAX

5、 8addax axAX 16 7 检测点2 2 2 有一数据存放在内存20000H单元中 现给定段地址为SA 若想用偏移地址寻到此单元 则SA应满足的条件是 最小为1001H 最大为2000H 当段地址给定为1001H以下和2000H以上 CPU无论怎么变化偏移地址都无法寻到20000H单元 解题过程 物理地址 SA 16 EA20000h SA 16 EASA 20000h EA 16 2000h EA 16EA取最大值时 SA 2000h ffffh 16 1001h SA为最小值EA取最小值时 SA 2000h 0h 16 2000h SA为最大值 8 检测点2 2 1 给定段地址为0

6、001H 仅通过变化偏移地址寻址 CPU的寻址范围为0010H到1000FH 解题过程 物理地址 SA 16 EAEA的变化范围为0h ffffh物理地址范围为 SA 16 0h SA 16 ffffh 现在SA 0001h 那么寻址范围为 0001h 16 0h 0001h 16 ffffh 0010h 1000fh 9 第3章寄存器 内存访问 3 1内存中字的存储3 2DS和 address 3 3字的传送3 4mov add sub指令3 5数据段3 6栈3 7CPU提供的栈机制3 8栈顶超界的问题3 9push pop指令3 10栈段 10 检测点3 1 1 在DEBUG中 用 D0

7、0lf 查看内存 结果如下 0000 00007080F030EF6030E2 00808012662022600000 00106226E6D6CC2E3C3B ABBA000026066688下面的程序执行前 AX 0 BX 0 写出每条汇编指令执行完后相关寄存器中的值movax 1movds axmovax 0000 ax 2662Hmovbx 0001 bx E626Hmovax bxax E626Hmovax 0000 ax 2662Hmovbx 0002 bx D6E6Haddax bxax FD48Haddax 0004 ax 2C14Hmovax 0ax 0moval 0002

8、 ax 00e6Hmovbx 0bx 0movbl 000c bx 0026Haddal blax 000CH 11 检测点3 1 2 内存中的情况如图3 6所示各寄存器的初始值 cs 2000h ip 0 ds 1000h ax 0 bx 0 写出CPU执行的指令序列 用汇编指令写出 写出CPU执行每条指令后 CS IP和相关寄存器的数值 再次体会 数据和程序有区别吗 如何确定内存中的信息哪些是数据 哪些是程序 12 13 检测点3 2 1 补全下面的程序 使其可以将10000H 1000FH中的8个字 逆序拷贝到20000H 2000FH中 movax 1000Hmovds axmovax

9、 2000Hmovss axmovsp 10hpush 0 push 2 push 4 push 6 push 8 push A push C push E 14 检测点3 2 2 补全下面的程序 使其可以将10000H 1000FH中的8个字 逆序拷贝到20000H 2000FH中 movax 2000Hmovds axmovax 1000Hmovss axmovsp 0pop e pop c pop a pop 8 pop 6 pop 4 pop 2 pop 0 15 第4章第一个程序 4 1一个源程序从写出到执行的过程4 2源程序4 3编辑源程序4 4编译4 5连接4 6以简化的方式进行

10、编译和连接4 71 exe的执行4 8可执行文件中的程序装入内存并运行的原理4 9程序执行过程的跟踪 16 第五章 BX 和loop指令 5 1 bx 5 2Loop指令5 3在debug中跟踪用loop指令实现的循环程序5 4debug和汇编编译器masm对指令的不同处理5 5loop和 bx 的联合应用5 6段前缀5 7一段安全的空间5 8段前缀的使用 17 第六章包含多个段的程序 6 1在代码段中使用数据6 2在代码段中使用栈6 3将数据 代码 栈放入不同的段 18 检测点6 1 1 下面的程序实现依次用内存0 0 0 15单元中的内容改写程序中的数据 完成程序 assumecs cod

11、esgcodesgsegmentdw0123h 0456h 0789h 0abch 0defh 0fedh 0cbah 0987hstart movax 0movds axmovbx 0movcx 8s movax bx movcs bx axaddbx 2loopsmovax 4c00hint21hcodesgendsendstart 19 检测点6 1 2 下面的程序实现依次用内存0 0 0 15单元中的内容改写程序中的数据 数据的传送用栈来进行 栈空间设置在程序内 完成程序 assumecs codesgcodesgsegmentdw0123h 0456h 0789h 0abch 0de

12、fh 0fedh 0cbah 0987hdw0 0 0 0 0 0 0 0 0 0start movax codesg 或movax csmovss axmovsp 24h 或movsp 36movax 0movds axmovbx 0movcx 8s push bx popcs bx 或popss bx addbx 2loopsmovax 4c00hint21hcodesgendsendstart 20 第七章更灵活的定位内存地址的方法 7 1and和or指令7 4大小写转换的问题7 58086的寻址方式 21 第八章数据处理的两个基本问题 8 1bx si di bp8 2机器指令处理的数

13、据所在位置8 3汇编语言中数据位置的表达8 4寻址方式8 5指令要处理的数据有多长 8 7div指令8 8伪指令dd8 9dup 22 第九章转移指令的原理 9 1操作符offset9 2jmp指令9 3依据位移进行转移的jmp指令9 4转移的目的地址在指令中的jmp指令9 5转移地址在寄存器中的jmp指令9 6转移地址在内存中的jmp指令9 7jcxz指令9 8loop指令9 9根据位移进行转移的意义9 10编译器对转移位移超界的检测 23 检测点9 1 1 程序如下 assumecs codedatasegmentdw2dup 0 dataendscodesegmentstart mova

14、x datamovds axmovbx 0jmpwordptr bx 1 codeendsendstart若要使jmp指令执行后 CS IP指向程序的第一条指令 在data段中应该定义哪些数据 答案 db3dup 0 答案 dw2dup 0 答案 dd0 24 检测点9 1 1 程序如下 assumecs codedatasegmentdd12345678hdataendscodesegmentstart movax datamovds axmovbx 0mov bx bx 或mov bx wordptr0 或mov bx offsetstartmov bx 2 cs 或mov bx 2 co

15、dejmpdwordptrds 0 codeendsendstart补全程序 使用jmp指令执行后 CS IP指向程序的第一条指令 25 检测点9 1 3 用Debug查看内存 结果如下 2000 1000BE0006000000 则此时 CPU执行指令 movax 2000hmoves axjmpdwordptres 1000h 后 cs 0006H ip 00BEH 26 检测点9 2补全编程 利用jcxz指令 实现在内存2000H段中查找第一个值为0的字节 找到后 将它的偏移地址存储在dx中 assumecs codecodesegmentstart movax 2000hmovds a

16、xmovbx 0s movch 0movcl bx jcxzok 当cx 0时 CS IP指向OKincbxjmpshortsok movdx bxmovax 4c00hint21hcodeendsendstart 27 检测点9 3补全编程 利用loop指令 实现在内存2000H段中查找第一个值为0的字节 找到后 将它的偏移地址存储在dx中 assumecs codecodesegmentstart movax 2000hmovds axmovbx 0s movcl bx movch 0inccxincbxloopsok decbxmovdx bxmovax 4c00hint21hcodeendsendstart 28 第十章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批量数据的传

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号