gpt4 book ai didi

assembly - 在 MASM x86 中使用文本宏 @date 或 @time

转载 作者:行者123 更新时间:2023-12-05 02:44:41 26 4
gpt4 key购买 nike

这里的学生:

我想要一种方法来创建一个包含构建的当前日期/时间的字符串,我可以将其输出到控制台。我有一个 consolOut 逐字符输出字符串(字符串以空结尾),但我不知道如何实际使用我书中列为“符号”的 @date @time 宏并在期间输出字符串集合时间。

如果我将它们放在引号中,它会输出“@date”而不会发生任何变化。如果我不把它放在引号中,它就不会构建。

我是否以某种方式在运行时调用它们,然后使用 mov 将它们存储在 .data 中?我什至如何与他们互动,他们看起来比我的 eax 大?

(这在我的家庭作业中不是必需的 - 我只是喜欢漂亮的标题。)

NULL EQU 0  ;constants(ascii): null == 0
LF EQU 0Ah ;linefeed == LF
CR EQU 0Dh ;carrage return == CR


printHEADER PROC
.data
header byte '<myname> CS 340 ASSEMBLY '
byte @date, ' '
byte @time
byte LF, CR, NULL
.code
lea esi, header
call consolOut ;arguments: esi as string ending in 0
ret
printHEADER endP

最佳答案

可能在 MASM 本身或 MASM32 的某个库中已经存在用于处理此问题的东西。但是我找不到,所以我整理了一个自己的简单解决方案:

include \masm32\include\masm32rt.inc

NULL EQU 0 ;constants(ascii): null == 0
LF EQU 0Ah ;linefeed == LF
CR EQU 0Dh ;carrage return == CR

; Stringifies a text macro.
; Expands into a quoted expansion of arg.
stringify MACRO arg
LOCAL foo
foo CATSTR <'>,arg,<'>
EXITM foo
ENDM


.data
header byte '<myname> CS 340 ASSEMBLY '
byte stringify(@Date), ' '
byte stringify(@Time)
byte CR, LF, NULL

.code
start:
printf("%s", OFFSET header)
invoke ExitProcess,0
end start

关于assembly - 在 MASM x86 中使用文本宏 @date 或 @time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66325606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com