📄 ear.asm
字号:
;********************************************
;文件名:EAR.ASM
;功能:读硬盘扇区数据并建立存储文件
;********************************************
count=512 ;1.定义常量
disk struc ;2.定义结构
packetsize db 16 ;3.
reserved db 0 ;4.
blockcount dw 1 ;5.
bufferaddr dd 200h ;6.
blocknum dq ? ;7.
disk ends ;8.
;9.
.model small ;10.定义编译模式
.data ;11.定义数据段
buff disk <> ;12.
.code ;13.定义代码段
public _rhd ;14.声明为公有标识符
_rhd proc ;15.子程序开始
push bp ;16.保护现场
mov bp,sp ;17.保存堆栈指针
push ds ;18.保护现场
push si ;19.保护现场
push di ;20.保护现场
;21.
mov ah,42h ;22.磁盘读
mov dl,80h ;23.第一硬盘
mov di,offset buff.blocknum ;24.取结构变量成员地址
mov bx,[bp+10] ;25.取第一个字节参数
mov [di],bx ;26.存入变量成员第一个字
mov bx,[bp+8] ;27.取第二个字节参数
mov [di+1],bx ;28.存入变量成员第二个字
mov bx,[bp+6] ;29.取第三个字节参数
mov [di+2],bx ;30.存入变量成员第三个字
mov bx,[bp+4] ;31.取第四个字节参数
mov [di+3],bx ;32.存入变量成员第四个字
mov si,offset buff ;33.取数据包地址
int 13h ;34.调用中断
;35.
mov dx,[bp+12] ;36.取文件名
mov cx,0 ;37.
mov ah,3ch ;38.建立文件
int 21h ;39.
mov bx,ax ;40.保存文件号
lds dx,buff.bufferaddr ;41.取数据缓冲区地址
mov cx,count ;42.取字节数
mov ah,40h ;43.写文件
int 21h ;44.
mov ah,3eh ;45.关闭文件
int 21h ;46.
pop di ;47.恢复现场
pop si ;48.恢复现场
pop ds ;49.恢复现场
pop bp ;50.恢复现场
ret ;51.子程序返回
_rhd endp ;52.子程序结束
end ;53.程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -