问题标签 [tasm]

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 回答
3310 浏览

assembly - 了解汇编语言中的跳转 (TASM)

所以我很难理解跳跃的实际工作原理,

让我举个例子,如果DX的值> 5,我想要循环L1并跳转到L2,所以我这样做了,但是代码如何知道L2中必须读取多少行代码?

如果我想执行多个操作,即 A、B、C,在跳转到 L2 之后,如何在第三次操作后终止 L2?

0 投票
3 回答
9308 浏览

assembly - 转换十六进制/十进制数 (Assemly-TASM)

我试图简单地按顺序打印数字,即

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

使用循环,首先我将每个数字转换为 Hexa 打印,将其重置为十进制增量 1,然后打印下一个直到数字等于 9,当数字等于 9 时,我使用 DAA 来简化数字并旋转后并移动我最终将结果存储在字符串中的数字。

直到 16 点之前的输出都很好,但是在 16 点之后,序列会重复,

期望的输出:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

电流输出 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,11,12,13,14,15

为什么会这样???

这是我的代码,

PS:我从这张图表中得到了帮助来理解这些数字。

http://www.cheat-sheets.org/saved-copy/ascii.png

0 投票
2 回答
4985 浏览

function - 用汇编语言 (TASM) 创建函数

我想使用循环打印前 20 个数字。

打印前九个数字绝对没问题,因为十六进制和十进制代码是相同的,但是从第 10 个数字开始,我必须将每个数字转换为其适当的代码,然后将其转换并存储为字符串并最终显示它

那是,

然后对每个数进行旋转移位,得到想要的输出数,即

然后将结果存储到字符串中并显示出来,即

这是带有适当注释的完整代码,

有什么合适的方法可以做到这一点,创建一个函数并使用 if/else (jumps) 来获得所需的输出,而不是一次又一次地重复代码?

伪代码:

0 投票
1 回答
552 浏览

assembly - TASM:负数的模

例如,当我执行 -1 % 3 时,我希望结果为 2。

当我执行以下 TASM 指令时,我得到了意想不到的结果:

0 投票
2 回答
4815 浏览

assembly - Dosbox 上的 Turbo 链接器错误 2003

我尝试在 dosbox 上运行 Turbo Linker (tlink),但由于某种原因它失败了。

我使用的是 Windows7 64 位,因此我无法运行 turbo asm 和 turbo 链接器。

好吧,我tlink/t hw1在 dosbox 上运行,我收到了这条消息:

你知道如何解决这个错误吗?为什么会这样?

0 投票
1 回答
8147 浏览

loops - 8086 汇编语言中的嵌套循环

我对我应该如何使用循环来获得该程序中的期望输出有疑问,

我想要做的是从用户那里输入任何数字,然后按降序对该数字进行排序,

我在这里尽力解释注释中代码的每一步。

这是我的代码,

请帮助我解决我卡住的嵌套循环。

0 投票
1 回答
1245 浏览

assembly - 显示 asm 文件的结果

我正在尝试在 Windows 7 64 位上使用 Tasm 组装以下程序:

文件名是prog4.asm

我确实遵循了以下步骤:

我可以在 EMU8086 模拟器上运行它,但是我无法在 DOSBOX 上看到命令的执行。

添加命令后如何显示寄存器值?

0 投票
3 回答
27821 浏览

assembly - 我不明白如何使用中断 21,AH=0ah

我的信息来自这里。该作业要求一个程序读取不超过 20 个字符,将这些字符转换为大写,然后将输入打印为大写。

我不知道如何从 int21/AH=0ah 访问输入。除非我了解上面链接的内容,否则我真的无法提出更准确的问题。有人可以解释吗?另外,如果这有什么不同,我正在使用 TASM。另外,我正在freedos上对此进行测试。

更新1:

好的,感谢您的帮助,我相信我了解中断需要如何设置和行为。

设置: 我必须指定一个 ds:dx 我希望此缓冲区存在的位置

我必须将 ds:dx 设置为 20 (设置缓冲区可以容纳的最大字符数)

我必须将 ds:dx+1 设置为 0 (我认为以某种方式设置了要读取的最小字符数)

实际调用 int21/AH=0ah,这将转到 ds:dx 并解释预设字节。它将在等待输入时停止程序

int21/AH=0ah 将从 ds:dx+2+n 填充我的输入(其中 n 是输入的字符数,包括 '\r')

我现在的问题是,我该怎么做。我刚刚再次浏览了 x86 汇编语言参考,但还没有找到任何有用的东西。

到目前为止我得到的代码

0 投票
1 回答
4111 浏览

assembly - TASM 中的本地标签:符号已定义

我想在我的程序中使用本地标签来防止在我的程序中使用公共标签的前缀。我尝试使用本地标签 (@@)。根据我的书,“本地标签的生命周期只会向前和向后延伸到下一个非本地标签”。但是,当我尝试编译文件时,会返回以下错误消息:

这是源代码:

0 投票
1 回答
3607 浏览

assembly - Tasm can't locate include file

In my program.asm I include file with the tasm directive

however I get an error "Can't locate file file.asm". The file is in the same directory as the source code which is D:\source. Tasm is in directory D:\tasm. I tried to create file TASM.CFG in the tasm/bin directory with the line /iD:\source but that didn't help. I also tried to move the file.asm into the tasm/bin directory, that also didn't help. I also tried to specify the full path in the include directive

that also didn't help.