问题标签 [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.

0 投票
3 回答
13232 浏览

assembly - 在两个不同的行上打印一个字符串

我试图让我的程序在两条不同的行上显示一个字符串。

这是一个 .com 程序,我使用的是 A86 汇编程序。

0 投票
5 回答
2760 浏览

assembly - 我在写汇编还是 NASM?

我受够了这个。一段时间以来,我一直在尝试掌握汇编,但我觉得我正在为我的编译器而不是一种语言编写代码。

我一直在使用这个教程,到目前为止它让我很痛苦。我正在使用 NASM,这可能是问题所在,但我认为它是最受欢迎的。我只是想学习最通用的汇编形式,所以我决定学习 x86。我不断遇到愚蠢的错误,比如无法增加变量。这是最新的:无法使用 div。

我应该更改编译器吗?似乎划分应该是标准的。我是否需要阅读两篇教程(一篇关于 NASM,一篇关于 x86?)。对这个问题有什么具体帮助吗?

0 投票
2 回答
510 浏览

assembly - 显示IP寄存器的内容

我需要打印 IP 寄存器的内容。(a86)。

我有中断处理程序:

和程序ipp:

和功能打印:

但它打印了很多奇怪的符号:)

请告诉我有什么问题。

PS我的汇编知识很差。

0 投票
3 回答
1059 浏览

assembly - A86 - 定义与前向引用冲突

我正在尝试使用 A86 为 8086 组装一些代码。我将问题缩小到 4 行代码。

你认为这段代码有什么问题?我将地址本身移动到 BX 寄存器并将 testz 地址中的字节值添加到 AL。

在一个更大的程序中,我也得到了#ERROR 13: Byte/Word Combination Not Allowed.

But labelis a word where [label]is a byte。为什么我的编译器不能区分这些?

因为我看不到任何字节/字冲突。


我的编译器平等地解释偏移量 testz 和 testz。我查看了字节码,看不出有什么区别。

上面的代码有效,但是有没有其他方法可以让我在一行中做到这一点

每当我在 [] 中添加标签名称时,根据我的编译器 a86,这是不可接受的。但我觉得他们在语言中是允许的。

0 投票
2 回答
658 浏览

assembly - 我需要什么类型的汇编器?

我正在学习汇编,我真的很喜欢裸 PUSH 和 POP 指令的概念。我真的很喜欢低级的东西。我一直在关注教程,这是一些可以用来制作简单 .exe 的代码:

那家伙说你可以用 A86 组装这段代码,但是当我到他们的网站时,它似乎已经灭绝了,程序版本只升级到 Windows XP?是否有适用于 Windows 64 位的 A86 汇编程序?什么类型的汇编器使用这些极其简单的指令?(我不太喜欢 MASM 或 FASM)

谢谢!

PS 我一直在使用 Olly DBG 进行逆向工程程序,这就是为什么我一直在学习更多关于汇编的知识,因此也学习了 PUSH、POP、MOV 和 INT。

0 投票
1 回答
1035 浏览

arrays - 使用 A86 程序集填充 1-100 的数组

我正在尝试编写一个汇编程序,该程序使用一个过程来填充一个值为 1-100 的数组。我到目前为止的代码如下:

但是,数组 first100 中的第一个值变成 513 而不是 1。这可能很简单,但我在哪里搞砸了?非常感谢您的时间。

0 投票
1 回答
11830 浏览

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 吗?

0 投票
1 回答
858 浏览

sorting - 装配 A86 - 冒泡排序

我正在开发一个汇编程序来接收一串字符,用冒泡排序对它们进行排序,然后输出排序后的字符串。我无权使用调试器,这就是我不得不寻求帮助的原因。我的程序似乎陷入了 BSORT 子例程中的无限循环,我似乎无法找到导致它的原因。这是一个任务,所以我宁愿解释我哪里出错/我做错了什么,而不是仅仅得到解决方案。

这是我的代码:

当它运行时,它会打印提示并接收字符串而没有明显的问题,但它永远不会打印消息或排序的字符串。以前,我让它打印消息和字符串(不知道我改变了什么使它停止),但它并没有完全排序。

非常感谢任何帮助/指导。

编辑1:好的,好消息是,我在导致无限循环的循环中发现了我的问题(我认为)。但是排序没有发生,现在我也得到了一些非常有趣的输出。这是运行时的输出:

有任何想法吗?

有任何想法吗?

编辑 2:它正在排序!:D

但是,它仍然在我的字符串的开头插入一个小写的 d 和黑桃字符。一旦我找到它的来源,我想它会解决的!上面的代码已更新。

这是我现在的输出:

更新输出

编辑 3:找到了我奇怪的字符 - 我正在打印所有 [INBUF],而不仅仅是字符串 [INBUF+2]。谢谢你们的帮助!:)

0 投票
1 回答
354 浏览

variables - 汇编变量放在哪里?

目前我正在学习汇编,我正在使用a86宏汇编器,Oracle VM VirtualBox。我想知道为什么我们要以这种方式声明或放置变量(在跳转命令之后)?如果我在跳转命令之前声明或放置变量,程序将出错。这种结构背后有什么解释吗?谢谢你。

0 投票
3 回答
2369 浏览

assembly - 汇编弹出一个空堆栈

我正在学习汇编,想知道当你弹出一个空堆栈或增加 SP(堆栈指针)时会发生什么,而它已经是 FFFE,例如:

当我通过调试器运行程序时,我看到 SP 在执行 pop 命令后将指向 SP = 0000。为什么SP指向0000?是因为内存中的最大 SP 是 FFFF 并且它只是循环到第一个点吗?(我知道 SP 只会增加或减少 2,因为 push 和 pop 总是 2 字节)并且当命令执行时程序会在 SP = 0000 处弹出任何内容吗?

我正在使用 a86 宏汇编器 Oracle VM VirtualBox。谢谢你。