chenshiye 发表于 2024-5-27 07:36:41

汇编文件创建默认地址在哪?

本帖最后由 chenshiye 于 2024-5-27 07:40 编辑

1.
这个地址输入不对吗?换成第二种方式就可以 为什么这种不行 ?
DATAS SEGMENT
    ;此处输入数据段代码
   
    FILENAME1 DB 'E\AMYFILE1.TXT',00
   
    HANDLE1 DW ?
   
    BUFFER DB 3 DUP(?)
    LEN DW ?
   
    ERROR1 DB 'Can Not Open File!',0dh,0ah,'$'
        ERROR2 DB 'Can Not Creat File!',0dh,0ah,'$'
        ERROR3 DB 'Reading File Wrong',0dh,0ah,'$'
        ERROR4 DB 'Wrinting File Wrong!',0dh,0ah,'$'
       
DATAS ENDS

用汇编语言创建文件,这个串记录文件创建的地址,为什么说我创建失败呢?



2.
DATAS SEGMENT
    ;此处输入数据段代码
   
    FILENAME1 DB 'AMYFILE1.TXT',00
   
    HANDLE1 DW ?
   
    BUFFER DB 3 DUP(?)
    LEN DW ?
   
    ERROR1 DB 'Can Not Open File!',0dh,0ah,'$'
        ERROR2 DB 'Can Not Creat File!',0dh,0ah,'$'
        ERROR3 DB 'Reading File Wrong',0dh,0ah,'$'
        ERROR4 DB 'Wrinting File Wrong!',0dh,0ah,'$'
       
DATAS ENDS
这种情况创建的文件默认是创建在哪里了?

FishC 发表于 2024-5-27 07:36:52

在汇编语言中,创建文件的地址并不是由字符串直接指定的,而是由操作系统(如Windows)提供的系统调用来实现的。

对于第一个串"D:\桌面\SQBR4OIIP4G~V21Y237D80W.png",如果你使用的是Windows操作系统的API进行文件创建,那么这个地址应该是一个有效的文件路径。如果你说创建失败,可能是因为路径不存在、权限不够等原因导致的。

对于第二个串"D:\桌面\1QS%5BXAOI{A4WS[BJGLN4KG9.png",这样的路径是非法的,因为它包含了非法字符(比如"%", "{", "["等)。在Windows操作系统中,文件路径是有一定规则的,只能包含字母、数字、下划线和点号,并且不能包含特殊字符。创建文件时,系统会根据你指定的路径来创建文件,但是不合法的路径会导致文件无法正常创建或保存,可能会出现错误提示。

要在汇编语言中创建文件,可以通过调用操作系统提供的系统调用来实现。具体步骤包括:

1. 调用`CreateFile`函数,指定文件路径、访问模式、共享方式等参数,以获取一个文件句柄。
2. 根据返回的文件句柄,调用`WriteFile`函数写入数据。
3. 最后,调用`CloseHandle`函数关闭文件句柄。

以下是一个示例代码,使用汇编语言(MASM)在Windows下创建一个文件:

.model flat, stdcall
option casemap:none

include windows.inc
include kernel32.inc
includelib kernel32.lib

.data
filePath db "D:\桌面\myfile.txt", 0

.code
main PROC
    ; 准备参数
    invoke CreateFile, addr filePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL
    mov ebx, eax ; 保存返回的文件句柄

    ; 写入数据
    mov edx, offset dataToWrite
    mov ecx, sizeof dataToWrite
    invoke WriteFile, ebx, edx, ecx, NULL, NULL

    ; 关闭句柄
    invoke CloseHandle, ebx

    ; 退出程序
    invoke ExitProcess, 0

main ENDP

.data
dataToWrite db "Hello, World!", 0

end main

注意,以上代码只是一个示例,具体实现需要根据具体的汇编语言和操作系统进行调整。同时,操作系统和编程环境的不同可能会导致代码的差异。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 汇编文件创建默认地址在哪?