纯x86汇编实现的多线程操作系统实践 - 第七章 AP2的用户进程

news2024/10/8 14:59:54

AP2用户进程的代码为task2.asm。

该用户进程将在界面上显示一个移动的弹球。一旦在界面上点击鼠标左键,弹球就会直接从鼠标点击处重新出现并继续移动。

如何在界面上显示出一个持续移动的小球?

计算小球将移动到的区域1->保留该区域中将被小球覆盖的点->将小球的点写入区域1->计算小球将移动到的区域2->将原区域1中被小球覆盖的点复原->保留区域2中将被小球覆盖的点->将小球的点写入区域2->…

代码解释如下:

主循环中,每一次循环都先等待30ms。

将原被小球覆盖的点复原。之后,将获取小球出现在新位置的坐标。然后先保存新位置处将被覆盖的点,再显示小球。

调用0x83系统中断,获取鼠标在界面上点击处的X、Z轴。同时判断,鼠标点击处的X坐标不能小于4,也不能超过1142;同时,点击处的Y轴也不能小于82,或者超过810。(如果并没有鼠标没有点击界面,获得的X、Y轴的值将都为0)

如果获取到的X、Y坐标满足条件,则小球下一次出现的地方将被更新为鼠标点击的位置。

小球新出现的位置的X轴和Y轴数据保存在x_axle和y_axle中,先用保存新坐标的值。

将新位置处将被小球覆盖的点都保存起来。

在新位置显示小球。

改变小球下一次显示时的颜色。

之后计算下一次小球出现的位置。先计算X轴的值。

x_nxt_step中保存了小球在X轴上移动的步长,为1时,每次向右移动一步;为-1时,每次向左移动一步。

先用x_nxt_step中保存的步长与小球当前位置的X轴的值相加,然后通过x_nxt_step的值来判断小球移动的方向。

如果x_nxt_step的值大于0,小球向右移动。此时判断小球移动后的X轴位置是否大于1142,如果大于,则将步长x_nxt_step设置为-1,下次往左移动。

如果小球本身向左移动,就判断小球移动后的X轴是否小于4,如果小于,则将步长x_nxt_step设置为1,下次往右移动。

之后计算Y轴的值。与X轴的计算相同,通过步长y_nxt_step来判断小球正在往上还是往下移动。往下移动时,判断Y轴是否已经到810处,如果是,则步长改为-1,下一次开始向上移动;如果小球往上移动,则判断Y轴是否已经到82处,如果是,步长改为1,下次开始向下移动。

至于_fill_old、_save_old、_fill_new这几个函数,很简单,不再解释。

task2.asm源代码地址:https://download.csdn.net/download/hanspruce_bird/87502151

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧物联网源码带手机端源码 物联网系统源码

在智慧工厂领域,智慧城市领域,都需要对设备进行监控。比如工厂需要对周围环境温度、湿度、气压、电压,灯的开关进行监控。这时候就需要物联网平台来进行管理。 推荐一个基于java开发的物联网平台,前端HTML带云组态、可接入视频监…

【华为OD机试模拟题】用 C++ 实现 - 网上商城优惠活动(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明网上商城优惠活动题目输入输出备注示例一输入输出说明输入说明输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才…

Android zygote进程启动流程

zygote启动过程中涉及到以下模块: app_processzygote USAPsocketFileDescriptor (FD) AndroidRuntimeAppRuntime (定义于app_process模块,继承自AndroidRuntime。) init进程启动zygote进程: #init.zygote32_64.rc s…

【华为OD机试模拟题】用 C++ 实现 - 统计匹配的二元组个数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明统计匹配的二元组个数题目输入输出描述示例一输入输出说明示例二输入输出说明备注Code使用说明 参加华为od机试,一定要注意不要完全背诵代码&

python读写hdfs文件的实用解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

Python学习笔记之环境搭建

Python学习笔记之环境搭建1. 下载Python2. Windows 安装最新Python3. Linux 安装最新PythonPython是一种编程语言,可以让您更快地工作并更有效地集成系统。 您可以学习使用Python,并立即看到生产力的提高和维护成本的降低。 Python是荷兰程序员吉多范罗苏…

使用 OpenCV 进行面部和眼睛检测

OpenCV是构建计算机视觉应用程序的强大工具。计算机视觉中最常见的任务之一是人脸检测,它涉及识别图像或视频中人脸的存在、位置和面部特征。在本文中,我们将学习如何使用 Haar 级联分类器检测图像中的人脸。先决条件在开始之前,你需要在计算…

Android打造万能的BannerView无限轮播图

效果图:工程目录图:BannerAdapter:banner轮播图的适配器,因为服务器返回的列表图片的url,显示的时候需要转成IamgeViw; BannerScroller:设置切换页面的持续时间; BannerView&…

怎样划分MES系统实施阶段,三分钟告诉你整体实施思路

MES系统的实施阶段划分的思路是:在集成的前提下实现可视化,在可视化的基础上实现精细化,在精细化的前提下实现均衡化。生产过程透明的目的就是要实现生产过程的可视化,实现精细化生产。首先要做的就是收集生产信息,这是…

Linux->进程地址空间

目录 前言: 1. 程序地址空间回顾 2. 进程空间是什么 3. 进程地址空间与内存 4. 进程地址空间和内存的关联 5. 为什么要有进程地址空间 前言: 我们在平时学习的过程当中总是听到栈、堆、代码段等等储存空间,但是这些东西到底是什么&…

CSS3新特性

CSS3新特性 1.1、字体图标 何为字体图标? 字体图标展示的是图标,本质是字体。用于处理简单的、颜色单一的图片 字体图标的优点: 灵活性:灵活地修改样式,例如:尺寸、颜色等轻量级:体积小、渲…

Java并发编程(1)—— 操作系统、Linux、Java中进程与线程的区别

一、操作系统中什么是线程和进程 线程和进程都是操作系统中定义的结构,进程是系统中一个独立的活动程序,比如像QQ、网易云音乐,进程是操作系统进行资源分配的基本单位,一个进程中的所有线程共享进程内的资源,而线程则…

【Python学习笔记】第十八节 Python 内置函数

Python 内置函数内置函数就是Python给你提供的, 拿来直接用的函数,比如print,input等Python 内置函数一览表内置函数abs()divmod()input()open()staticmethod()all()enumerate()int()ord()str()any()eval()isinstance()pow()sum()basestring()execfile()…

ARMv8 同步和信号量(读写一致性问题):Load-Exclusive/Store-Exclusive指令详解

目录 一,Local Monitor 与 Global Monitor 1,Local Monitor 2,Global Monitor 二,Exclusive 指令的简单使用 三,Exclusive 示例程序 1,原子自加1程序 2,原子锁程序 四, 多处理…

算法设计与智能计算 || 专题一: 算法基础

专题一: 算法基础 文章目录专题一: 算法基础1. 算法的定义及特点1.1 算法的基本特征1.2 算法的基本要素1.3 算法的评定2 算法常见执行方法2.1 判断语句2.2 循环语句2.3 综合运用3. 计算复杂度4. 代码的重用5. 类函数的定义与使用5.1 定义类5.2 调用类函数1. 算法的定义及特点 …

_hand-2

实现一个迷你版的vue 入口 // js/vue.js class Vue {constructor (options) {// 1. 通过属性保存选项的数据this.$options options || {}this.$data options.data || {}this.$el typeof options.el string ? document.querySelector(options.el) : options.el// 2. 把da…

php mysql高校田径运动会成绩管理系统

第一章 引言 1 1.1 选题背景 1 1.2 编写目的 2 1.3 目标 2 1.4 功能需求 3 第二章 开发工具介绍 4 2.1 PHP 4 2.2 APACHE 5 2.3 MYSQL数据库 5 2.4 运行环境 WINDOWS XP 6 2.5 XAMPP 6 2.6 DREAMWEAVE8 6 2.7 EDITPLUS 7 第三章 需求…

【华为OD机试模拟题】用 C++ 实现 - 热点网络统计(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明热点网络统计【华为OD机试模拟题】题目输入输出描述示例一输入输出示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出…

C++入门知识【超详解】

目录1.认识Chello worldC关键字2.命名空间3.std标准库4.输入输出5.缺省参数6.函数重载7.引用7.1引用的概念7.2引用的场景1.作参数2.作返回值7.3引用的注意点7.4指针和引用的区别8.auto关键字9.基于范围的for循环10.内联函数10.1概念10.2特征11. C98中的指针空值1.认识C hello …

数据结构——单链表(上)

🌇个人主页:_麦麦_ 📚今日名言:“生活总是让我们遍体鳞伤,但到后来,那些受伤的地方一定会变成我们最强壮的地方。” ——海明威《永别了武器》 目录 ​编辑 一、前言 二、正言 3.1链表的概念及结构…