汇编语言实验17完整代码及详细解析

汇编语言实验17完整代码及详细解析

建议先自己思考问题的答案,不懂则返回看书
太简单了,就是使用除法。 需要在虚拟机MSDOS中运行
返回参数:
操作成功:AH=0,AL= 操作的扇区数
操作失败:ah=出错代码

assume cs:code

code segment
start:
	mov ax,cs
	mov ds,ax
	mov si,offset int7ch
	mov ax,0
	mov es,ax
	mov di,200h
	mov cx,offset int7ch_end - offset int7ch
	cld
	rep movsb
	
	cli
	mov word ptr es:[7ch*4],200h
	mov word ptr es:[7ch*4+2],0
	sti

	mov ah,0
	mov bx,1
	int 7ch

	mov ax,4c00h
	int 21h
	

	;bx为入口参数,16位除法,dx高位,ax低位,ax商,dx余数
int7ch:
	cmp ah,1
	ja over

	push cx
	push dx
	push bx
	push ax

	mov ax,bx
	mov dx,0
	mov bx,1440
	div bx
	mov cl,al		;盘面号,先存在cl中

	mov ax,dx
	mov dh,cl		;将暂存在cl中的盘面号存在dh中
	mov dl,0		;驱动器号,软驱 0

	mov bl,18
	div bl
	mov ch,al		;磁道号

	inc ah		
	mov cl,ah		;扇区号

	mov ax,0b800h
	mov es,ax
	mov bx,160*5	;es:bx  指向读写区

	pop ax
	push ax
	mov al,8		;读写扇区数
	cmp ah,0
	je read
	cmp ah,1
	je write

read:
	mov ah,2
	jmp short ok
write:
	mov ah,3
	jmp short ok
ok:
	int 13h
	pop ax
	pop bx
	pop dx
	pop cx
over:
	iret

int7ch_end:
	nop

code ends
end start
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值