gpt4 book ai didi

assembly - 如何读取汇编语言中的命令行参数?

转载 作者:行者123 更新时间:2023-12-02 14:55:58 24 4
gpt4 key购买 nike

我正在使用 TASM 汇编程序,但我似乎无法找到一种方法来保存我的命令行参数,甚至无法输出它们。我尝试在 dx=0081hah=09h 时执行 int 21h。它没有做任何事情,尽管我已经读过它是这样做的方法。

我添加了我认为应该用于复制和显示我输入的参数的代码:

mov dx, 81h
mov ah, 09h
int 21h

最佳答案

命令行位于 Program Segment Prefix (PSP) , 从位置 81h 开始。在位置 80h,您可以找到字符串的长度。此字符串始终以 0Dh 结尾,而不是 $(如果要使用 int 21h/ah=09h,请注意这一点)。

在 .exe 程序的开头,段寄存器 DSES 指向该 PSP。这就是为什么你必须在程序开始时用 DATA 段加载 DS (mov ax, @data;mov ds, ax)。让我们跳过那个:

MODEL small
.STACK 100h

.CODE

main PROC

; http://www.ctyme.com/intr/rb-2791.htm
mov ah, 40h ; DOS 2+ - WRITE - WRITE TO FILE OR DEVICE
mov bx, 1 ; File handle = STDOUT
xor ch, ch
mov cl, ds:[0080h] ; CX: number of bytes to write
mov dx, 81h ; DS:DX -> data to write (command line)
int 21h ; Call MSDOS

; http://www.ctyme.com/intr/rb-2974.htm
mov ax, 4C00h ; AH=4Ch, AL=00h -> exit (0)
int 21h ; Call MSDOS
main ENDP

END main

关于assembly - 如何读取汇编语言中的命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52859172/

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