⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 openfile.asm

📁 汇编-主要是一些从csdn收集的一些好的汇编代码
💻 ASM
字号:
;1.0018 开始是 存放20个SOFT号 请问一下 20个SOFT号 是什么东西啊?

;2.我在调试的时候,刚开始运行程序发现ES和DS是相等的,是不是刚开始ES和DS都存放PSP的初始地址阿?

;3.还有建立一个文件 如果成功 那么AX返回 文件代号,请问文件代号是什么啊?

;4.  如果ES=DS那么下面几条指令时什么意思啊?请教高手,我一直看不明白  
;     mov BX,AX         ;AX=文件号
;     mov SI,0018H      ;
;     mov AL,ES:[SI+BX] ;  
;     mov ES:[SI+1],AL  ;

;1. 这个是一组程序同时打开的文件的句柄列表。你可以跟踪看看。还有,执行exec的时候,这个好像可以继承的。
;2. 要看什么是什么程序了,.com的话4个段都是一样的:psp的段址,.exe程序的话只有ES和DS是PSP的段址。
;3. 差不多就是句柄号吧,自己调试看看了
;4. 完整程序贴出来



.model small
.stack 200H
.data
    Welcome  DB 'How are you !$'     ;将要输出的测试信息,'$'结束字符串
    FileName DB 'Test',0             ;要改向输出的文件名
.code

start:   
 mov AX,@data      ;取得数据段地址
     mov DS,AX         ;
     mov AX,3C00H      ;DOS的3C号功能,建立文件(DS:DX=ASCII串地址,CX=文件属性),建立成功AX=文件代号,失败AX=错误码
     xor CX,CX         ;文件属性
     lea DX,FileName   ;文件名
     int 21H           ;
     jb  Over          ;(无符号数比较)低于转移(等价JNAE).CF=1,且ZF=0则转移(段内直接短转移)

     mov BX,AX         ;AX=文件号
     mov SI,0018H      ;
     mov AL,ES:[SI+BX] ;  
     mov ES:[SI+1],AL  ;

     mov AH,09H
     lea DX,Welcome    ;DS:DX=输出串地址
     int 21H

     mov AL,01H        ;
     mov ES:[SI+1],AL  ;
     mov AX,3E00H      ;DOS功能3E表示关闭文件,BX为要关闭的文件号,若失败则AX返回错误代号
     int 21H

Over:     mov  AH,4CH ;
     int  21H    ;

.exit
       end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -