王爽汇编语言12章拓展实验 个人学习笔记

题目要求:

编写1号中断,将DOS窗口中的显示的所有字母a都变为绿色

思路:

因为要查看窗口的所有字母,所有运行程序的时候应该将显存上存储数据的内存遍历一遍,用来找到a
显存是从b800:0000(总共25行,每行160列,25*160=4000字节)开始的,我们又知道偏移地址为偶数用来存储数据,奇数用来存储属性,所以我们只需要遍历偏移地址为偶数的显存地址就可以(遍历2000次)

最后就是还有一个小小的小问题,欢迎大家讨论指正 = - =

代码:

assume cs:code

code segment
start: mov ax,cs
       mov ds,ax
	   mov si,offset do0
	   mov ax,0
	   mov es,ax
	   mov di,200h
	   mov cx,offset do0end-offset do0
	   cld
	   rep movsb

	   mov ax,0
	   mov es,ax
	   mov word ptr es:[1h*4],200h
	   mov word ptr es:[1h*4+2],0
                   
                   int 1h

	   mov ax,4c00h
	   int 21h

do0:   mov ax,0b800h
       mov ds,ax
	   mov bl,2h
	   mov si,0
	   mov cx,2000
s0:	   mov al,[si]
	   cmp al,97
	   je s
	   add si,2
	   loop s0



s:     mov [si+1],bl
       add si,2
	   dec cx
	   
	   jmp short s0

	   mov ax,4c00h
	   int 21h
do0end:nop
code ends
end start

结果展示:

王爽汇编语言12章拓展实验 个人学习笔记_第1张图片

你可能感兴趣的:(汇编笔记)