如何获取MASM中当前光标位置

2024-02-23

我正在编写一个智商测试生成程序,其中我必须随机生成包括言语非言语问题的问题。为了生成非语言问题,我想显示其中字母和字母以圆形或三角形出现的问题。

但我不知道如何定位它们。例如,在非语言问题中,我想通过编写以下代码将字母和数字放置在三角形中:

mov al, alpha 
call writechar
add dl, 4
call gotoxy
mov al, num
call writedec 
sub dl, 2
add dh, 1
call gotoxy
mov al, alpha 
call writechar

这是我已经知道的

dh= rows

dl=列

打电话给戈托西

Gotoxy 将光标相对于控制台的起始位置定位,而不是相对于当前位置。这是我遇到的问题。

我认为应该有一种方法来获取当前光标位置,以便我可以通过添加和减去当前值来前后定位光标dh and dl同时生成一系列形状。


您可以在线获取 Irvine32 帮助:http://programming.msjc.edu/asm/help/ http://programming.msjc.edu/asm/help/。有一个 WinAPI 函数指定用于获取光标位置:获取控制台屏幕缓冲区信息 https://learn.microsoft.com/en-us/windows/console/getconsolescreenbufferinfo。不幸的是结构的描述CONSOLE_SCREEN_BUFFER_INFO是不正确的。适当的 COORD 结构的名称是dwCursorPosition.

这是如何使用它的示例:

INCLUDE Irvine32.inc
INCLUDELIB Irvine32.lib

.DATA
    txt1 db "Current Cursor Position is X=",0
    txt2 db " Y=",0
    BufferInfo CONSOLE_SCREEN_BUFFER_INFO <>

.CODE
main PROC

    lea edx, txt1
    call WriteString

    invoke GetStdHandle, STD_OUTPUT_HANDLE
    invoke GetConsoleScreenBufferInfo, eax, ADDR BufferInfo

    movzx eax, BufferInfo.dwCursorPosition.X
    call WriteInt

    lea edx, txt2
    call WriteString
    movzx eax, BufferInfo.dwCursorPosition.Y
    call WriteInt

    exit

main ENDP

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

如何获取MASM中当前光标位置 的相关文章

  • 自定义键盘中断处理程序

    我正在尝试编写一个简单的程序 将标准键盘中断替换为自定义的键盘中断 以减少变量 但是 如果不调用旧处理程序 它就无法工作 这是我的中断处理程序 handler proc push ax push di dec EF pushf when t
  • MIPS 在程序中使用 $s0... 等注册并最终恢复它是否优雅

    我在 MIPS 教程中读到 只有寄存器 s0 s7 在过程调用中被保留 但我认为 也许我错了 创建有副作用的程序并不优雅 我认为程序应该只更改 v0 v1 寄存器和堆栈 如果需要的话 我是对的吗 所以我认为在我的程序中我只能使用 t0 t9
  • 在 NASM 中使用 istruc 时:“警告:尝试初始化 BSS 部分‘.bss’中的内存:忽略 [-w+other]”

    在搜索这个错误时我发现this https stackoverflow com questions 65731514 nasm attempt to initialize memory in bss section 77001709问题 但
  • 如何查看JVM中JIT编译的代码?

    有什么方法可以查看 JVM 中 JIT 生成的本机代码吗 一般用法 正如其他答案所解释的 您可以使用以下 JVM 选项运行 XX UnlockDiagnosticVMOptions XX PrintAssembly 根据特定方法进行过滤 您
  • 英特尔® 事务同步扩展新指令 (TSX-NI) 与英特尔 TSX 有何不同?

    我在Intel的页面上找到了 https ark intel com products 97123 Intel Core i5 7500 Processor 6M Cache up to 3 80 GHz https ark intel c
  • gcc 如何知道内联汇编中使用的寄存器大小?

    我有内联汇编代码 define read msr index buf asm volatile rdmsr d buf 1 a buf 0 c index 使用该宏的代码 u32 buf 2 read msr 0x173 buf 我发现反汇
  • 推送 64 位 intel osx

    我想将 64 位地址压入堆栈 如下所示 asm pushq 0x1122334455667788 但我得到编译错误 我只能按以下方式推送 asm pushq 0x11223344 有人可以帮助我理解我的错误吗 我是装配新手 所以如果我的问题
  • MASM 字符串反转

    好吧 我正在讨论这个问题 可能是一个非常复杂的解决方案 但这是我脑海中浮现的第一件事 我需要编写一个汇编语言程序来反转 源 字符串 而不使用 目标 字符串 临时变量 这是我的尝试 INCLUDE Irvine32 inc data sour
  • 如何调试 iOS 应用程序在启动时崩溃,仅在程序集文件中设置断点

    我遇到了当前正在开发的应用程序的问题 问题是应用程序在启动时在后台运行一段时间后崩溃 并且仅在这种情况下 在应用程序被杀死时启动应用程序不会导致调试器或手机崩溃 无论是否进行调试 在后台启动应用程序大约 5 10 分钟都不会导致崩溃 在后台
  • 汇编编程语言:程序仅当输入为 ESC 时退出,并在退出前要求确认(y/n),否则循环

    我只是汇编语言编程的初学者 我们的第一个任务是让程序仅在输入为 ESC 时退出 退出之前请求确认 y n 否则循环 我知道 ESC 在 ASCII 代码中具有等效值 但我对插入位置或是否需要添加更多内容感到困惑 请帮我 这是程序 model
  • 左/右旋转进位的实际用途

    循环左进位和循环右进位指令有哪些实际用途 在我的汇编课上 我们无法想出一个有用的好例子 如果要将位从一个操作数移出并移入另一个操作数 SHL EAX 1 move sign bit of EAX RCL EDX into LSB of ED
  • 装配中出现奇怪的字符?

    我写了以下代码 386 model small stack 100h data text db Paper 0 code start lea dx text mov ah 9h int 21h mov ah 4ch int 21h end
  • 为什么这个 C++ 包装类没有被内联掉?

    EDIT 我的构建系统出了问题 我还在弄清楚到底是什么 但是gcc产生了奇怪的结果 尽管它是 cpp文件 但是一旦我使用了g 然后它按预期工作 对于我一直遇到麻烦的事情来说 这是一个非常精简的测试用例 其中使用数字包装类 我认为会内联 使我
  • 编写 AMD64 SysV 程序集时使用哪些寄存器作为临时寄存器?

    我正在使用实现一个功能cpuid根据 AMD64 SysV ABI 进行组装 我需要在函数本身中使用 2 个临时寄存器 第一个用于累积返回值 第二个用作计数器 我的功能目前如下所示 zero argument function some c
  • 汇编指令陷阱有什么作用?

    当程序需要时 程序通常会发出软件陷阱 由操作系统提供服务 通用异常处理程序 操作系统确定陷阱的原因并做出响应 适当地 汇编指令 trap 和 BASIC 中的 TRAP 指令一样吗 答案似乎是肯定的 你能接受还是拒绝我的结论 不中断 的代码
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 汇编-符号标志和奇偶校验标志

    我不明白什么时候设置标志标志 什么时候设置奇偶校验 据我所知 符号标志表示运算结果的符号 0表示正数 1表示负数 那么为什么在下一个代码中 mov al 5 sub al 124 SF为零 结果是负数 关于PF 为什么a和b中设置了PF a
  • 为什么 Visual Studio 使用 xchg ax,ax

    我正在查看程序的反汇编 因为它崩溃了 并注意到很多 xchg ax ax 我用谷歌搜索了一下 发现它本质上是一个 nop 但是为什么 Visual Studio 会执行 xchg 而不是 noop 该应用程序是一个C NET3 5 64位应
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • 如何知道寄存器是否是“通用寄存器”?

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

随机推荐

  • Ruby Gem 开发 - 如何使用 ActiveRecord?

    我目前正在尝试开发我的第一个红宝石宝石 但我已经陷入困境 我使用 bundle gem 命令创建基本结构并阅读了一些教程 但我找不到如何集成 ActiveRecord 我在哪里创建迁移 我是在 lib 文件夹中还是在根目录中创建 db mi
  • UIButtons 的 IBOutletCollection - 更改按钮的选定状态

    我在视图中遇到多个 UIButton 的问题 我希望单独选择按钮 一次选择多个按钮 例如 10 个按钮 选择按钮 1 4 5 9 在我的标头中 我有一个 IBOutletCollection 属性 property retain nonat
  • 如果MySQL数据库没有关闭会发生什么?

    如果MySQL数据库没有关闭会发生什么 我们如何知道它是否正确关闭 我确实有一个页面 页面上有 11 个表 所以我所做的是在脚本开始之前在页面顶部打开数据库 并在脚本 PHP 结束的地方关闭 结尾是 mysql close db 这足够公平
  • UIBarButtonItem 如何禁用辅助功能 (iOS)

    SO 我正在尝试禁用已添加到 UINavigationController 的 leftBarButtonItems 中的 UIBarButtonItem 的 VoiceOver 可访问性 虽然我可以为没有标题的按钮禁用它 但我似乎无法为有
  • 如何在 symfony2 的表单类中隐藏标签?

    我知道您可以在树枝中拆分表单并选择不渲染特定字段的标签 但我忍不住认为您必须能够从表单类中执行此操作 选项数组中的 label 键允许您将此值更改为您喜欢的任何值 但传递 false 或空字符串只会返回字段名称 请参阅下面的示例 其中 ro
  • USB 驱动程序 华硕 Nexus 7 Windows 7

    我已经尝试了该网站和其他许多网站上的所有建议 但均无济于事 甚至可以在 Windows 上为 Nexus 7 进行 Android 开发吗 我试过从sdk管理器下载的usb驱动 华硕的那个 我已尝试将 USB 模式更改为 PTP 但仍然收到
  • 当您使用 Javascript 单击或停止悬停时,如何使 CSS 悬停内容保持在原位?

    我有一个想要实现的身体系统功能 当用户将鼠标悬停在身体 部位上时 它会突出显示并显示该特定身体部位的信息 我已经按照我想要的方式编写了 CSS 代码 但是我对 JavaScript 一无所知当单击身体部位或鼠标离开悬停状态时 获取要粘贴的信
  • MIPS 左加载字 (LWL) 和右加载字 (LWR) 指令的作用是什么?

    最近我一直在研究 MIPS 指令集 当时我遇到了两个在其他指令集中没有见过的不寻常指令 我环顾四周 想找到一个关于指令到底做什么的合理解释 但我所能弄清楚的是 它们在某种程度上与未对齐的内存访问有关 例如 维基百科说 https en wi
  • 膨胀类 android.widget.listview 时出错

    我浏览了很多其他人的问题和解释 但没有什么对我有用 我的程序的第一个活动 ListActivity 在膨胀其 xml 文件时遇到问题 LogCat 输出为 08 01 08 36 17 800 E AndroidRuntime 1935 F
  • statsmodels 如何编码以字符串形式输入的 endog 变量?

    我是使用 statsmodels 进行统计分析的新手 我大多数时候都会得到预期的答案 但有些事情我不太明白 statsmodels 在以字符串形式输入时定义逻辑回归的 endog 依赖 变量的方式 可以定义如下所示的示例 Pandas 数据
  • 在 asp.net mvc 项目中添加列到创建的标识表?

    我在我的 MVC 5 项目中使用 Identity 2 0 当我第一次在数据库中运行该项目时 已创建所有用于身份验证和授权的默认表 在 AspNetUsers 表中 我需要创建名为 LoyoutId 的整数类型的附加列 我的问题是如何向创建
  • 如何测试需要jquery的ES6类?

    我有一个需要 jquery 的 ES6 模块 import from jquery export class Weather Constructor for Weather class param latitude param longit
  • 是否可以使用 python 安装 msi?

    是否可以用 python 编写一个安装 msi 的脚本 或者 是否可以通过任何其他脚本来实现 您可以使用过时的操作系统 http docs python org library os html highlight os system os
  • 应用程序获得 Amazon AppStore 批准需要多长时间? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 申请被审查的平均时间是多少亚马逊应用商店 https developer amazon com 小型 无争议 优质的应用程序 在 Android 市场
  • ASP.NET MVC3 和 Facebook 集成

    我正要使用 MVC3 启动一个新的 ASP NET 项目 并且由于一些要求与 facebook 集成有关 因此我需要您就以下问题提供建议 1 是否可以将我的会员用户连接到他们的 Facebook 帐户 以便每当用户在我的网站上分享 添加 评
  • 有没有办法在 Android 中定义 EditText 的最小值和最大值?

    我想定义一个最小值和最大值EditText 例如 如果有人尝试在其中输入月份值 则该值必须在 1 12 之间 我可以通过使用来做到这一点TextWatcher但我想知道是否有其他方法可以在布局文件或其他地方执行此操作 编辑 我不想限制字符数
  • Java中的char和Character有什么区别?

    我需要知道Java中的char和Character有什么区别 因为当我编写java程序时 char可以工作 而Character却不起作用 char 是表示单个 16 位 Unicode 字符的原始类型 而 Character 是一个包装类
  • 如何正确使用UrlEncode和Decode

    所以我有一个文件要上传到 azure blob 存储 C 测试文件夹 A B testfile txt 以及两个扩展方法 可帮助对我的路径进行编码 以确保为其提供有效的 azure 存储 blob 名称 public static stri
  • 旋转 glViewport?

    在 多点触控 环境中 表面上显示的任何应用程序都可以根据用户的方向旋转 缩放 实际的解决方案是在 FBO 上绘制应用程序 并绘制一个带有纹理的旋转 缩放的矩形 我认为这对性能没有好处 而且所有显卡都不提供FBO 这个想法是沿着用户的方向裁剪
  • 如何获取MASM中当前光标位置

    我正在编写一个智商测试生成程序 其中我必须随机生成包括言语非言语问题的问题 为了生成非语言问题 我想显示其中字母和字母以圆形或三角形出现的问题 但我不知道如何定位它们 例如 在非语言问题中 我想通过编写以下代码将字母和数字放置在三角形中 m