8086边画边听键盘

2024-01-03

我熟悉等待键盘输入的 INT 16h,但我正在开发一个游戏,我希望有一个游戏循环,它可以在屏幕上显示动画,并且只要有键盘敲击,8086 就应该运行到我的中断处理程序并告诉我按下了哪个键来相应地更新我的数据。

我怎么能这样做呢?


当调用 INT 16 时,您还可以在 AH 中使用 1 而不是 0 轮询输入。

INT 16h / AH = 01h - check for keystroke in the keyboard buffer.

    return:

        ZF = 1 if keystroke is not available.
        ZF = 0 if keystroke available.
        AH = BIOS scan code.
        AL = ASCII character.
        (if a keystroke is present, it is not removed from the keyboard buffer). 

(来源。) http://h4xxel.org/asm/8086_bios_and_dos_interrupts.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

8086边画边听键盘 的相关文章

  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 在 x86 程序集中将整数打印到控制台

    当我在 16 位汇编中添加两个值时 将结果打印到控制台的最佳方法是什么 目前我有这个代码 CODE START mov ax 1 put 1 into ax add ax 2 add 2 to ax current value mov ah
  • 为什么 Solaris 汇编器生成的机器代码与 GNU 汇编器在这里不同?

    我为 amd64 编写了这个小汇编文件 对于这个问题来说 代码的作用并不重要 globl fib fib mov edi ecx xor eax eax jrcxz 1f lea 1 rax ebx 0 add rbx rax xchg r
  • Visual Studio 2017 上的简单装配程序

    386 model flat c stack 100h printf PROTO arg1 Ptr Byte data msg1 byte Hello World 0Ah 0 code main proc INVOKE printf ADD
  • 为什么 RISC-V S-B 和 U-J 指令类型以这种方式编码?

    我正在读一本书 计算机组织与设计RISC V版 我遇到了 S B 和 U J 指令类型的编码 我上面提到的那些类型有奇怪的编码立即字段 S B 类型将直接字段分为两部分 这是有道理的 因为所有指令编码都必须相似 但我无法理解为什么立即字段以
  • 为什么x86分页没有特权环的概念?

    早在 1982 年 当 Intel 发布 80286 时 他们在分段方案中添加了 4 个特权级别 环 0 3 由全局描述符表 GDT 和局部描述符表 LDT 中的 2 位指定 在 80386 处理器中 Intel 添加了分页功能 但令人惊讶
  • 两个基本的 ANTLR 问题

    我正在尝试使用 ANTLR 来获取简单的语法并生成汇编输出 我在 ANTLR 中选择的语言是 Python 许多教程看起来非常复杂或详细阐述与我无关的事情 我真的只需要一些非常简单的功能 所以我有两个问题 将值从一个规则 返回 到另一规则
  • 汇编8086监听键盘中断

    我有与此完全相同的问题 边画边听键盘 https stackoverflow com questions 13970325 8086 listen to keyboard while drawing 但第一个答案 接受的答案 只听键盘一次
  • 为什么 GCC 不将 a*a*a*a*a*a 优化为 (a*a*a)*(a*a*a)?

    我正在对科学应用程序进行一些数值优化 我注意到的一件事是 GCC 会优化调用pow a 2 通过将其编译成a a 但是调用pow a 6 没有优化 实际会调用库函数pow 这大大降低了性能 相比之下 英特尔 C 编译器 http en wi
  • 使用 Easy 68K (68000) 组装范围内的随机数

    我正在使用 Easy 68K 模拟器创建一个简单的黑杰克游戏 需要使用随机数来分配牌 我的牌必须在 2 到 11 的范围内 我似乎每次都得到相同的数字 但它不在我预期的范围内 我的卡值需要以 D3 结束 因此我有以下随机数代码 CLR L
  • 寄存器寻址模式与直接寻址模式

    我在试卷中遇到过这个问题 它指出 哪种给定的寻址模式更快 为什么 寄存器寻址方式 直接寻址方式 现在根据我的说法 寄存器寻址模式应该更快 因为寄存器是计算机中最快的存储位置 这是正确答案吗 请帮忙 谢谢 两种寻址模式之间的区别是 地址的来源
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • “rep stos”x86 汇编指令序列有什么作用?

    我最近偶然发现了以下汇编指令序列 rep stos dword ptr edi For ecx重复 存储内容eax到哪里edi指向 递增或递减edi 取决于方向标志 每次 4 个字节 通常 这用于memset型操作 通常 该指令简单地写成r
  • 如何知道寄存器是否是“通用寄存器”?

    我试图了解寄存器必须具备什么标准才能被称为 通用寄存器 我相信通用寄存器是一个可以用于任何用途的寄存器 用于计算 将数据移入 移出等 并且是一个没有特殊用途的寄存器 现在我读到了ESP寄存器是通用寄存器 我猜是ESP寄存器可以用于任何事情
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • ARMv8 A64 汇编中立即值的范围

    我的理解是 ARMv8 A64 汇编中的立即参数可以是 12 位长 如果是这样的话 为什么这行汇编代码是 AND X12 X10 0xFEF 产生此错误 使用 gcc 编译时 Error immediate out of range at
  • 从 exe 文件中获取汇编级代码?

    我当时正在做linux汇编编程 在过去的几天里我已经转而学习windows汇编编程 我在用ml作为我的汇编器和golink作为我的链接器 我有我的汇编代码并已获得我的exe从中 现在我需要取回它的十六进制 xff xab x55等等 在li
  • 如何在 Debian 上编译 DOS 程序?

    在我的汇编语言课程中 我们使用 DPMI 编写 DOS 程序 不幸的是 我无法一直使用 32 位 Windows 机器 我在我使用的几乎每台计算机上都安装了 Debian 虚拟机 我已经安装了 DOSBox 和 DOSEMU 有什么办法可以
  • CPU寄存器和多任务处理

    我目前正在学习汇编 我很困惑 CPU 寄存器如何与多任务一起工作 所以在多任务系统中 CPU可以随时暂停某个程序的执行并运行另一个程序 那么在这一步中寄存器值是如何保存的呢 寄存器是压入堆栈还是以其他方式 CPU 寄存器如何与多任务一起工作
  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的

随机推荐

  • PhoneGap - Android - 如何将相机捕获的图像保存在SD卡中

    我是 PhoneGap Android 开发人员的新手 我正在使用phonegap 在android 中制作一个应用程序 我想从设备相机拍照 然后在从设备拍摄图像后将其显示在屏幕上 并将捕获的图像存储在 SD 卡中 你能告诉我该怎么做吗 古
  • 二进制轮无法使用twine上传到pypi上

    我正在尝试从 github actions 上传适用于 linux 和 windows 的 Pypi 包 使用linux我得到这个结果 Binary wheel xxx cp36 cp36m linux x86 64 whl has an
  • 如何使用 Rails 在浏览器中查看电子邮件视图

    我正在为我的 Rails 应用程序处理电子邮件 目前我知道查看电子邮件的唯一方法是将其发送给自己 如何让 views 文件夹下的 notifications 文件夹中的 daily summary html haml 在浏览器中呈现 我想我
  • SQL Server:查询循环

    我需要获取所有应用程序数据库 并且我已经能够通过 select name from sys database where database id gt 6 现在 我需要运行以下查询 select User FirstName User Na
  • MVC 4 中的自定义成员资格提供程序

    我刚开始学习MVC4 作为第一步 我需要执行登录 因为自定义数据库在数据库中只有三个角色 真的有必要实施自定义会员资格提供商吗 我对此提出疑问 因为我正在阅读这篇文章 而他正在采取另一种方式 http patrickdesjardins c
  • 默认参数中的 C++ new 运算符及其副作用

    我有一个关于 C 中默认参数的问题 如果我有这样的功能 int foo int obj new Int 4 Stuff with obj 当然 现在整数仅用作示例 但问题是我是否要为参数提供一个值 如下所示 int x 2 foo x 将表
  • git 的源代码树修复 作为限电的一部分,密码身份验证被暂时禁用。请改用个人访问令牌[重复]

    这个问题在这里已经有答案了 仅供参考 这是专门针对 sourcetree 的 我在拉入 sourcetree 时遇到此错误 昨天工作得很好 但突然出现此错误 git c diff mnemonicprefix false c core qu
  • iPhone 崩溃后要求用户发送崩溃日志

    某些应用程序在崩溃后重新启动时询问用户是否要通过电子邮件发送崩溃日志 他们是怎么做到的 他们必须在崩溃时记录日志并读取该文件并要求用户发送它 如果它不为空 是否有一个框架或开源项目可以集成来做到这一点 看看批判主义 www critterc
  • 当按钮事件中 window.location 更改时,IE9 onbeforeunload 被调用两次...最小再现

    我一直在锤击这个问题 但一无所获 我有一个取消按钮 执行 window location 404 htm 当点击时 onbeforeunload 处理程序会触发两次 但前提是用户在第一个对话框中单击 留在此页面 正常的导航 页面刷新 转到主
  • Spark 作业失败,因为 HDFS 正在缓存 jar

    我将 Scala Spark jar 上传到 HDFS 以在我们的集群上测试它们 跑步后 我经常意识到需要做出改变 因此 我在本地进行更改 然后将新 jar 推送回 HDFS 然而 经常 并非总是 当我这样做时 hadoop 会抛出一个错误
  • 将 HH:MM:SS 格式的时间仅转换为秒?

    如何转换时间格式HH MM SS变成单位秒数 P S 时间有时可能有格式MM SS only 无需explode任何事物 str time 23 12 95 str time preg replace d 1 2 d 2 00 1 2 st
  • 解释 lambda argparse.HelpFormatter(prog, width)

    此代码可以正常工作以增加帮助文本的宽度 但尚不清楚 lambda 函数是做什么的 编辑 为了澄清 问题不是为什么 lambda 函数通常很有用 但反而 参数解析器初始化代码如何使用 lambda 函数 import argparse imp
  • Windows中的JRE安装目录[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有没有命令可以检查Windows下活动的 因为机器可以安装1个以上的JRE JRE安装目录 对于linux来说 对应的命令是 which java W
  • Firebase idToken 过期后我该怎么办

    我在用着onAuthStateChanged this unregisterAuthObserver firebase auth onAuthStateChanged user gt if user user getIdToken true
  • grep 在目录中查找包含字符串的文件

    我正在尝试熟悉终端的基础知识 我想在我的 CMS 网站中找到包含我的 Google Analytics 跟踪代码 gaq 作为搜索字符串的文件应该可以解决问题 我的桌面上有一个文件夹 其中包含所有站点文件 用户 我的名字 桌面 网站 我打开
  • Android:如何查找设备的帧速率?

    帧速率 我指的是显示变化的速率 即调用 Ondraw 并重新绘制画布 所有 Android 设备都有默认费率吗 由于该速率取决于设备的处理能力 因此在开始为该移动设备编程之前如何找出该设备的帧速率 这可能是后续这个问题 https stac
  • CSS如何在伪元素内垂直对齐文本

    我创建了一个伪元素来放置无序列表 CSS如下 ul pricing column width 200px height 400px background red position relative margin 50px pricing c
  • dataTables .row( ) 不是服务器端处理行详细信息的函数

    function format d return Full name br Salary br The child row can contain any data you wish including links images inner
  • Android 中使用 iText 生成的 PDF 中不显示西里尔字母

    我正在尝试在我的 Android 应用程序中生成 PDF 我使用 iText 它生成 PDF 但只显示英文字母 我找到了使用 unicode 的 iText 示例代码 我在一个简单的 comsole java 应用程序中尝试了这个示例代码
  • 8086边画边听键盘

    我熟悉等待键盘输入的 INT 16h 但我正在开发一个游戏 我希望有一个游戏循环 它可以在屏幕上显示动画 并且只要有键盘敲击 8086 就应该运行到我的中断处理程序并告诉我按下了哪个键来相应地更新我的数据 我怎么能这样做呢 当调用 INT