Assembly 如何在TASM中查看寄存器值?

Assembly 如何在TASM中查看寄存器值?,assembly,Assembly,我正在通过涡轮汇编学习汇编。 每当我组装一个程序,它都会完美地组装和执行,但屏幕上没有任何数据。例如(寄存器内部发生的变化等)。 那么有没有办法检查输出 我不想使用调试器 我想知道是否有任何命令或中断或任何可以帮助我输出的东西 注意:如果您在感兴趣的寄存器值上链接“C”运行时库调用printf或itoa,或手动编写的合理传真,我可以输出字符串或字符,但不能输出值或注册内容,它不知道在代码运行时寄存器的值是什么。所以你的问题的答案是“你不能” 在运行期间,您可以使用一些外部方法来检查值(调试程序显

我正在通过涡轮汇编学习汇编。 每当我组装一个程序,它都会完美地组装和执行,但屏幕上没有任何数据。例如(寄存器内部发生的变化等)。 那么有没有办法检查输出

我不想使用调试器

我想知道是否有任何命令或中断或任何可以帮助我输出的东西


注意:如果您在感兴趣的寄存器值上链接“C”运行时库调用
printf
itoa
,或手动编写的合理传真,我可以输出字符串或字符,但不能输出值或注册内容,它不知道在代码运行时寄存器的值是什么。所以你的问题的答案是“你不能”

在运行期间,您可以使用一些外部方法来检查值(调试程序显然是,或者在您使用某个虚拟机的情况下,它可能会提供一些调试接口来检查它的状态)

或者您可以在内部、屏幕上、或记录到文件中、或通过网络/串行线、或只是发出哔哔声/闪烁某些东西来输出它。(与调试器相比,这通常是一种相当差劲的调试方式,但有时出于各种原因,可能会被首选)

“我可以输出字符串或字符,但不能输出值或注册内容”
-这没有任何意义。如果可以输出字符,则可以输出任何文本,也可以输出值。把它们转换成文本就行了

例如,456可以显示为字符串
“4”、“5”、“6”


或者是十六进制格式的
'1''C''8'
(这在汇编程序中要简单得多,因为CPU已经对值base_2进行了编码,所以将其转换为base_16只需要选择4个base_2数字的组来形成base_16数字…哈!在许多单词中,如何准确地说4位构成0..F十六位:D).

为什么不使用调试器?有一个可以帮助您:

使用turbo debugger运行它,在获得exe文件后,只需使用DosBox和turbo debugger运行,并将其安装在与exe文件相同的目录中。下一个命令:

td YourFileName
然后从打开的视图的上部菜单中选择“视图”选项卡和cpu。
您可以使用f7(1步)或f9(完全运行)运行程序,并在运行时看到寄存器值的更新。

没有库…只是普通汇编。如果您计划在assembler中编程,请学习使用调试器。这是在没有屏幕输出的情况下验证代码执行情况以及调试无法正常运行的代码的最典型方法。汇编程序的工作是汇编指令。它怎么能调试一个程序呢?所以你想要的正是调试器给你的,但你不想使用它。祝你好运。在asm中使用调试器比添加调试打印要容易得多。打印任何东西都会改变至少一些寄存器的状态,因此添加它会对您正在调试的代码产生影响。我有点想知道现在那些TASM的人在哪里购买该软件,我认为今天不可能得到TASM/TD的合法副本。@Ped7g在学校学习它:D以色列真的投资于网络/高科技教育在我完全主观的观点中,有免费且得到良好支持的NASM,语法几乎相同,只是简单一点(我觉得更好)。尽管缺少了一些“ND”,以使替换变得完整和直接。是的,我在推它。:)@Ped7g一直想了解这一点,但他们坚持使用8086,因为它“更容易”理解