问题标签 [a86]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - 在两个不同的行上打印一个字符串
我试图让我的程序在两条不同的行上显示一个字符串。
这是一个 .com 程序,我使用的是 A86 汇编程序。
assembly - 我在写汇编还是 NASM?
我受够了这个。一段时间以来,我一直在尝试掌握汇编,但我觉得我正在为我的编译器而不是一种语言编写代码。
我一直在使用这个教程,到目前为止它让我很痛苦。我正在使用 NASM,这可能是问题所在,但我认为它是最受欢迎的。我只是想学习最通用的汇编形式,所以我决定学习 x86。我不断遇到愚蠢的错误,比如无法增加变量。这是最新的:无法使用 div。
我应该更改编译器吗?似乎划分应该是标准的。我是否需要阅读两篇教程(一篇关于 NASM,一篇关于 x86?)。对这个问题有什么具体帮助吗?
assembly - 显示IP寄存器的内容
我需要打印 IP 寄存器的内容。(a86)。
我有中断处理程序:
和程序ipp:
和功能打印:
但它打印了很多奇怪的符号:)
请告诉我有什么问题。
PS我的汇编知识很差。
assembly - A86 - 定义与前向引用冲突
我正在尝试使用 A86 为 8086 组装一些代码。我将问题缩小到 4 行代码。
你认为这段代码有什么问题?我将地址本身移动到 BX 寄存器并将 testz 地址中的字节值添加到 AL。
在一个更大的程序中,我也得到了#ERROR 13: Byte/Word Combination Not Allowed
.
But label
is a word where [label]
is a byte。为什么我的编译器不能区分这些?
因为我看不到任何字节/字冲突。
我的编译器平等地解释偏移量 testz 和 testz。我查看了字节码,看不出有什么区别。
上面的代码有效,但是有没有其他方法可以让我在一行中做到这一点
每当我在 [] 中添加标签名称时,根据我的编译器 a86,这是不可接受的。但我觉得他们在语言中是允许的。
assembly - 我需要什么类型的汇编器?
我正在学习汇编,我真的很喜欢裸 PUSH 和 POP 指令的概念。我真的很喜欢低级的东西。我一直在关注本教程,这是一些可以用来制作简单 .exe 的代码:
那家伙说你可以用 A86 组装这段代码,但是当我到他们的网站时,它似乎已经灭绝了,程序版本只升级到 Windows XP?是否有适用于 Windows 64 位的 A86 汇编程序?什么类型的汇编器使用这些极其简单的指令?(我不太喜欢 MASM 或 FASM)
谢谢!
PS 我一直在使用 Olly DBG 进行逆向工程程序,这就是为什么我一直在学习更多关于汇编的知识,因此也学习了 PUSH、POP、MOV 和 INT。
arrays - 使用 A86 程序集填充 1-100 的数组
我正在尝试编写一个汇编程序,该程序使用一个过程来填充一个值为 1-100 的数组。我到目前为止的代码如下:
但是,数组 first100 中的第一个值变成 513 而不是 1。这可能很简单,但我在哪里搞砸了?非常感谢您的时间。
datetime - 装配 A86 - 获取和显示时间
我正在开发一个汇编程序来获取系统时间和日期,将其转换为 ASCII,并将其显示在监视器上。我无法让它正确显示,并且找不到我出错的地方。这是一个任务,如果可能的话,我宁愿有解释而不仅仅是解决方案。这是我的代码:
这是我在 2015 年 2 月 19 日上午 9:11 运行它时得到的结果:
我尝试添加很多关于我的意图的评论,以便您了解我正在尝试做什么,并且更容易查看是否存在某种逻辑错误。我认为从输出中可以清楚地看出我错过了将我的分钟和秒数放入 TIME 并且对如何解决这个问题有一些想法,但是在中午之后,我遇到了一些奇怪的时间,我对正在发生的事情感到困惑我的约会。任何帮助深表感谢。
编辑:有时间通过拆分它并实际处理分钟和秒来工作......哎呀。现在我的输出如下:
于 2015 年 2 月 19 日上午 9:23 运行
EDIT2:越来越近了!感谢 [DATE] 捕获 - 我修复了这个问题并获得了正确的月份和日期值,并且更接近年份值。发现我移动得不够远,因为 year 有 4 个字符长 - 16 位,而不是 8 位!- 所以我无法仅通过 SHR 4 位来获得全部内容!我的输出现在看起来像:
编辑 3:添加 CVT_CT 将世纪转换为 ASCII 并将其添加到 [DATE] 字符串,但我仍然得到相同的输出......
编辑 4:我忘了给我的新函数添加一个调用......哇。现在工作!!!谢谢大家的帮助!
附带问题:知道为什么秒总是 02 吗?
sorting - 装配 A86 - 冒泡排序
我正在开发一个汇编程序来接收一串字符,用冒泡排序对它们进行排序,然后输出排序后的字符串。我无权使用调试器,这就是我不得不寻求帮助的原因。我的程序似乎陷入了 BSORT 子例程中的无限循环,我似乎无法找到导致它的原因。这是一个任务,所以我宁愿解释我哪里出错/我做错了什么,而不是仅仅得到解决方案。
这是我的代码:
当它运行时,它会打印提示并接收字符串而没有明显的问题,但它永远不会打印消息或排序的字符串。以前,我让它打印消息和字符串(不知道我改变了什么使它停止),但它并没有完全排序。
非常感谢任何帮助/指导。
编辑1:好的,好消息是,我在导致无限循环的循环中发现了我的问题(我认为)。但是排序没有发生,现在我也得到了一些非常有趣的输出。这是运行时的输出:
有任何想法吗?
编辑 2:它正在排序!:D
但是,它仍然在我的字符串的开头插入一个小写的 d 和黑桃字符。一旦我找到它的来源,我想它会解决的!上面的代码已更新。
这是我现在的输出:
编辑 3:找到了我奇怪的字符 - 我正在打印所有 [INBUF],而不仅仅是字符串 [INBUF+2]。谢谢你们的帮助!:)
variables - 汇编变量放在哪里?
目前我正在学习汇编,我正在使用a86宏汇编器,Oracle VM VirtualBox。我想知道为什么我们要以这种方式声明或放置变量(在跳转命令之后)?如果我在跳转命令之前声明或放置变量,程序将出错。这种结构背后有什么解释吗?谢谢你。
assembly - 汇编弹出一个空堆栈
我正在学习汇编,想知道当你弹出一个空堆栈或增加 SP(堆栈指针)时会发生什么,而它已经是 FFFE,例如:
当我通过调试器运行程序时,我看到 SP 在执行 pop 命令后将指向 SP = 0000。为什么SP指向0000?是因为内存中的最大 SP 是 FFFF 并且它只是循环到第一个点吗?(我知道 SP 只会增加或减少 2,因为 push 和 pop 总是 2 字节)并且当命令执行时程序会在 SP = 0000 处弹出任何内容吗?
我正在使用 a86 宏汇编器 Oracle VM VirtualBox。谢谢你。