📄 openfile.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 + -