【汇编】时钟中断的调变速(.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

猜你喜欢

转载自blog.csdn.net/Gyangxixi/article/details/113614285
今日推荐