x86下汇编输出闪烁问题解决

之前关于dos下汇编输出闪烁问题已经得到了很好的解决,主要是由于中间输出了空格,导致屏幕输出的内容一闪而过
具体内容可以参考此博客汇编语言课程设计1 实验详解
下面来介绍x86下汇编程序出现的一个bug
题目如下:
编写程序画一个8*8的棋盘,盘面为相互交替的灰色和白色方块。编程时可以使用Irvine32链接库的SetTextColor和Gotoxy过程,不要使用全局变量,使用每个过程中声明的参数。每个过程只完成单一任务,以尽可能地简短。
有bug程序如下

include  Irvine32.inc

.data
	black = 0
	blue = 1
	green = 2
	cyan = 3
	red = 4
	magenta = 5
	brown = 6
	lightGray = 7
	gray = 8
	lightBlue = 9
	light_Green = 10
	lightCyan = 11
	lightRed = 12
	light_Magenta = 13
	yellow = 14
	white = 15
.code
paincolor	proc
;将8*8棋盘改为盘面为相互交替的灰色和白色方块
;ebx传递非白色方块的背景颜色
;esi传递其他方块的颜色
	mov   eax,ebx
	mov   dh,10
;dh为行数
	mov   dl,10
;dl为列数
	mov   ecx,10
L1:
	push  ecx
	mov   ecx,10
	mov   dl,10
L2:
	call  Gotoxy
	call  SetTextColor
	call  Clrscr
	cmp   eax,ebx
	je	  L3									;相等时跳转到L3循环
	mov   eax,ebx
	jmp   L4									;不等时给eax赋值,跳过L3的赋值语句												;来到L4的赋值语句
L3: 
	mov   eax,white + (white * 16)
L4:	
	call  Crlf
	inc   dl
	loop  L2

	pop   ecx
	inc   dh
	loop  L1
paincolor   endp
main	proc
	mov   ebx,black + (white * 16)
	call  paincolor
	exit
main	endp
end		main

无法输出颜色是因为没有指定字符
在每次输出的时候加入‘A’即可解决问题

include  Irvine32.inc

.data
	black = 0
	blue = 1
	green = 2
	cyan = 3
	red = 4
	magenta = 5
	brown = 6
	lightGray = 7
	gray = 8
	lightBlue = 9
	light_Green = 10
	lightCyan = 11
	lightRed = 12
	light_Magenta = 13
	yellow = 14
	white = 15
.code
paincolor	proc
;将8*8棋盘改为盘面为相互交替的灰色和白色方块
;ebx传递非白色方块的背景颜色
;esi传递其他方块的颜色
	mov   eax,ebx
	mov   dh,10
;dh为行数
	mov   dl,10
;dl为列数
	;call  Clrscr
	mov   ecx,10
L1:
	push  ecx
	mov   ecx,10
	mov   dl,10
L2:
	;call  Clrscr
	call  Gotoxy
	call  SetTextColor
	push  eax
	mov   al,'A'
	call  WriteChar
	pop   eax
	cmp   eax,ebx
	je	  L3									;相等时跳转到L3循环
	mov   eax,ebx
	jmp   L4									;不等时给eax赋值,跳过L3的赋值语句												;来到L4的赋值语句
L3: 
	mov   eax,white + (black * 16)
L4:	
	;call  Crlf
	inc   dl
	loop  L2

	pop   ecx
	inc   dh
	loop  L1
paincolor   endp
main	proc
	mov   ebx,gray + (black * 16)
	call  paincolor
	exit
main	endp
end		main
发布了30 篇原创文章 · 获赞 9 · 访问量 3569

猜你喜欢

转载自blog.csdn.net/znevegiveup1/article/details/104131435
今日推荐