【汇编】时钟中断的调变速(.asm源码)

项目环境
  • 编译环境:搭建一个nasm2.8的编译环境。
  • 镜像文件:采用winhex_18.2刷入编码。
  • 虚拟机:采用Bochs-2.4.5
项目软件
运行结果

在这里插入图片描述

调速模块
	;out  0x43,0x34
	;out  0x40,low8
	;out  0x40,high8

	mov dx,0x40
	mov al,0x10						;高八位,稍微修改一点就能改变速度
	out dx,al
程序源码(.asm)
org 0x8400
start:	
	sti

	mov ax,0xb800                 ;指向文本模式的显示缓冲区
    mov es,ax

	mov ax,0
	mov ds,ax
	
	mov word [ds:0x20],int_time0
 	mov word [ds:0x22],0

	;变速
	mov dx,0x43
	mov al,0x34
	out dx,al                      ;ffff

	mov dx,0x40
	mov al,0x00						;
	out dx,al

	mov dx,0x40
	mov al,0x10						;高八位,稍微修改一点就能改变速度
	out dx,al

	;out  0x43,0x34
	;out  0x40,low8
	;out  0x40,high8
	
	mov si,1600
	mov bx,0
	push bx
x0:	
	pop bx
x:	
	call delay
	mov byte [es:bx],'Z'
 	mov byte [es:bx+1],0x0c
	inc bx
	inc bx

	cmp bx,1600
	jnz x

	jmp x0


int_time0:
x2:	
	mov byte [es:si],'L'
 	mov byte [es:si+1],0x0a
	inc si
	inc si
x3:	
	mov al,0x20
	mov dx,0x20 
	out dx,al           ;EOI=1,中断结束
	
	iret
delay:  
	mov cx,60000
x4:	
	dec cx
	jnz x4
	ret
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码两年半的练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值