栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【汇编语言 王爽】实验17代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【汇编语言 王爽】实验17代码

代码如下:

assume cs:code
code segment
start:
;将int 7ch写入内存0:200h
mov ax,cs
mov ds,ax
mov si,offset int7ch

mov ax,0
mov es,ax
mov di,200h

mov cx,offset int7chend - offset int7ch
cld
rep movsb

;将int 7ch的地址写入中断向量表中
mov es:[4*7ch],200h
mov es:[4*7ch+2],0

;安装程序返回
mov ax,4c00h
int 21h

;写int 7ch的中断例程
;功能:根据逻辑扇区号计算出物理扇区号
;参数:
;ah表示读(ah=0),写(ah=1)
;dx 逻辑扇区号
;es:bx 读出/写入的内存首地址
int7ch:
push ax
push cx
push dx

push ax ;保存功能号
mov ax,dx
mov dx,0
mov cx,1440
div cx ;此时ax=面号

push ax ;将面号保存起来
mov ax,dx
mov cl,18
div cl ;此时al=int,ah=rem
mov ch,al ;直接获取磁道号
inc ah
mov cl,ah ;rem+1后为扇区号

pop dx ;将面号送入dl(dx)
mov dh,dl ;将面号送入dh
mov dl,0 ;驱动器号默认为0

pop ax ;将功能号送入ah
add ah,2 ;;ah=int 13h功能号,读(ah=2)写(ah=3)
mov al,1 ;al=读/写的扇区总数(默认al=1)

;调用int 13h中断例程进行读写
;int 13h参数
;ah=int 13h功能号,读(ah=2)写(ah=3)
;al=读/写的扇区总数(默认al=1)
;ch=磁道号
;cl=扇区号
;dh=磁头号(面)
;dl=驱动器号(默认dl=0)
;es:bx 指向要读/写的扇区
int 13h

int7chret:
pop dx
pop cx
pop ax
iret

int7chend:
nop

code ends
end start

【注意】以上代码只检验了逻辑扇区/物理扇区转换的准确性,未对实际的软盘进行读写,结果仅供参考噢!如有错误欢迎评论指出!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301193.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号