储存程序式计算机,实验三、存储程序式计算机的简单程序设计.pdf

c8da8f5a7cda2d62dda9e5a200b168b9.gif实验三、存储程序式计算机的简单程序设计.pdf

实验三实验三 存储程序式计算机的简单程序设计存储程序式计算机的简单程序设计 1 1实验目的实验目的 (1)理解自然语言与形式语言的区别。 (2)理解机器指令和汇编指令的基本概念和功能。 (3)观察机器指令程序和汇编指令程序的执行并解释程序的含义。 (4)能够基于存储程序计算机平台进行简单的程序设计。 2 2实验准备实验准备 (1)认真阅读“附录 B Vcomputer 存储程序式计算机概述”部分的内容,以及本教材第 3.7 节有关“虚拟机”的内容。 (2)熟悉 Vcomputer 平台的基本操作。 3 3热身实验热身实验 3.13.1 一个机器指令程序的执行过程一个机器指令程序的执行过程 在 Vcomputer 平台上输入表 3.1 中的内容(机器指令),并回答以下问题 问题 1请描述程序的功能。 问题 2开始时,若内存地址 A0 的值(即A0)为 20, R1 的值为 10,R2 的值为 20, R3 的值为 30,程序结束时,A0 和 R1、R2、R3 寄存器的值各为多少(注以上数字均 为十六进制数,下同) 问题 3若内存地址 A0 的值为 FF,R2 的值为 02,程序结束时会产生怎样的结果 问题 4若某程序可以将操作系统中断入口地址(通过技术手段可以得到)替换为自己 编写程序的起始地址, 会造成怎样的影响是否可以将这种程序称为一种计算机病毒 (不考 虑病毒的自我复制特性) 表 3.1 Vcomputer 的机器指令 3.23.2 一个汇编指令程序的执行过程一个汇编指令程序的执行过程 在 Vcomputer 平台上输入如下的内容(汇编指令),并回答以下问题 LOAD R0,01 LOAD R1,FF LOAD R2,02 地址 内容 00 11 01 A0 02 53 03 21 04 33 05 A0 06 90 07 00 LABEL1ADD R3,R1,R0 JMP R3,LABEL2 ADD R4,R1,R2 JMP R4,LABEL2 SHL R0,01 JMP R2,LABEL2 SHL R0,08 NOT R0 JMP R1,LABEL1 LABEL2HALT 问题 1请用自然语言解释上述汇编程序。 问题 2请将该汇编程序转换为 Vcomputer 的机器指令。 3.33.3 一一个机器指令程序的简单修改个机器指令程序的简单修改 在 Vcomputer 平台上输入表 3.2 中的机器指令,并回答以下问题 问题 1请用自然语言解释每条指令的含义。 问题 2该程序是否具有修改自身的功能如果有,修改的功能是什么 问题 3若不让程序进行问题 2 中的自身修改,需要对源程序进行怎样的改动 表 3.2 机器指令 1 地址 内容 00 10 01 0E 02 70 03 00 04 30 05 08 06 11 07 0F 08 71 09 00 0A 31 0B 10 0C 90 0D 00 0E 6F 0F 52 3.43.4 一个机器指令程序的简单设计一个机器指令程序的简单设计 在 Vcomputer 平台上输入表 3.3 中的机器指令,若机器从内存地址 A6 开始执行,请回 答以下问题。 表 3.3 机器指令 2 地址 内容 A6 20 A7 A8 A8 21 A9 A8 AA 22 AB 20 AC 53 AD 01 AE 55 AF 23 B0 90 B1 00 问题 1程序结束时,寄存器 5 中的值是多少 问题 2指令 20A8 与 11A8 中的“A8”是一个意思吗如果不是,分别表示什么 问题 3修改以上程序,将 R3 的值存入内存单元(地址)26 中,将 R5 的值存入内存单 元 28 中,然后将这两个内存地址中的值进行互换。 4 4进阶实验进阶实验 4.14.1 分段函数的求解分段函数的求解 设机器从内存地址 00 开始执行, 用 Vcomputer 机器指令与汇编指令分别编程, 对以下 问题进行求解 有一个函数 其中,x 保存于内存单元 25 中,计算 y 的值,将结果存放于内存单元 26 中。 4.24.2 累加求和累加求和 设机器从内存地址 00 开始执行,用 Vcomputer 机器指令与汇编指令分别编程,对以下 问题进行求解 计算 12315 的值,将结果存放于内存单元 25 中。 4.34.3 迭代求和迭代求和 设机器从内存地址 00 开始执行,用 Vcomputer 机器指令与汇编指令分别编程,对以下 问题进行求解 有一对兔子, 从出生后第 3 个月起每个月都生一对兔子, 小兔子长到第三个月后每个月 又生一对兔子,假如兔子都不死,问到第 11 个月时兔子总数为多少将计算结果存放于内 存单元 25 中。 热身实验参考答案热身实验参考答案 1.1.一个机器指令程序的执行过程一个机器指令程序的执行过程 问题 1 程序的功能注释如下。 地址 内容 00 11 01 A0 ;将地址为 A0 主存单元的值存入寄存器 1 02 53 03 21 ;将寄存器 2 和 1 中用补码表示的数相加,结果存入寄存器 3 04 33 05 A0 ;将寄存器 3 中的数取出,存入内存地址为 A0 的单元中 06 90 07 00 ;停机 问题 2若开始时 A0 的值为 20,寄存器 1 的值 10,寄存器 2 的值 20,寄存器 3 的值 30,则程序结束时,A040; R120;R220;R340。 问题 3寄存器值溢出,被自动截断。 问题 4可能会阻断源程序的正常运行,进而转到自己编写程序的起始地址开始执行。 可以称为一种计算机病毒。 2.2.一个汇编指令程序的执行过程一个汇编指令程序的执行过程 问题 1上述汇编程序的自然语言描述如下 LOAD R0,01 ;将数 01 存入寄存器 0 中 LOAD R1,FF ;将数 FF 存入寄存器 1 中 LOAD R2,02 ;将数 02 存入寄存器 2 中 LABEL1ADD R3,R1,R0 ;将寄存器 1 和寄存器 0 中用补码表示的数相加存入寄存器 3 中 JMP R3,LABEL2 ;若寄存器 3 与寄存器 0 中的值相同,则将 Label2 所对应地址(转移 地址)存入程序计数器;否则,程序按原来的顺序继续执行 ADD R4,R1,R2 ;将寄存器 1 和寄存器 2 中用补码表示的数相加存入寄存器 4 中 JMP R4,LABEL2 ;若寄存器 4 与寄存器 0 中的值相同,则将 Label2 所对应地址(转移 地址)存入程序计数器;否则,程序按原来的顺序继续执行 SHL R0,01 ;将寄存器 0 中的数左移 1 位(先将寄存器 0 中的十六进制数转换为二进 制数,再左移 1 位),移位后,用 0 填充腾空的位 JMP R2,LABEL2 ;若寄存器 2 与寄存器 0 中的值相同,则将 Label2 所对应地址(转移 地址)存入程序计数器;否则,程序按原来的顺序继续执行 SHL R0,08 ;将寄存器 0 中的数左移 8 位(先将寄存器 0 中的十六进制数转换为二进 制数,再左移 8 位),移位后,用 0 填充腾空的位 NOT R0 ;将寄存器 0 中的数按位取反,将结果存入寄存器 0 中 JMP R1,LABEL1 ;若寄存器 1 与寄存器 0 中的值相同,则将 Label1 所对应地址(转移 地址)存入程序计数器;否则,程序按原来的顺序继续执行 LABEL2HALT ;LABEL2停机 问题 2上述汇编语言程序按照 Vcomputer 机器的汇编指令可转换为如下十六进制机 器指令 2001 21FF 2202 5310 8318 5412 8418 6001 8218 6008 7000 8106 9000 3.3.一一个机器指令程序的简单修改个机器指令程序的简单修改 问题 1各条指令的含义及其执行情况。 1)把 0E 单元中的内容(6F)存入 R0 中;(执行) 2)把 R0 中的内容按位取反;(执行) 3)把 R0 中的内容(90)存放到 08 单元中;(执行) 4)把 0F 单元中的内容(52)存入 R1 中;(执行) 5)把 R1 中的内容按位取反;(未执行,停机。即修改自身程序) 6)把 R1 中的内容存放到 10 单元中;(未执行) 7)停机。(未执行) 问题 2 由以上分析可知,该程序具有修改自身的功能,修改后程序提前停机。 问题 3将机器指令 3008 中的地址“08”改为一个与源程序无关的地址比如“11”。 4.4.一个机器指令程序的简单设计一个机器指令程序的简单设计 问题 1程序结束时,寄存器 5 中的值是 70。 问题 220A8 与 11A8 中的 A8 不是一个意思,20A8 中的 A8 为一个 16 进制数,而 11A8 中的 A8 为主存单元的地址。 问题 3修改程序如表 3.4 所示 表 3.4 修改之后的程序 地址 十六进制机器程序 汇编程序 00 20A8 LOAD R0,A8 02 21A8 LOAD R1,A8 04 2220 LOAD R2,20 06 5301 ADD R3,R0,R1 08 5523 ADD R5,R2,R3 0A 3326 STORE R3,26 0C 3528 STORE R5,28 0E 1328 LOAD R3,28 10 1526 LOAD R5,26 12 3528 STORE R5,28 14 3326 STORE R3,26 16 9000 HALT

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值