组装中刽子手的打印图
Print figure of hangman in assembly
有没有更好的打印刽子手模型的方法?
FIG0 DB 0DH,0AH,' +=======+',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG1 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG2 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG3 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/ \ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG4 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG5 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG6 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,'/ |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG7 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,'/ \ |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG8 DB 0DH,0AH,' +=======+',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' \O/ |',0DH,0AH,' | |',0DH,0AH,' | |',0DH,0AH,' / \ |',0DH,0AH,' ========+',0DH,0AH,'$'
这是一些不错的数字。 https://youtu.be/e2S_POws3DQ?t=42s
如果你赢了比赛,他跳起来的样子真的很酷。我尝试使用 call Clrscr 让他跳起来,但没有成功。
首先:不要更改您的环境(Windows、32 位、Console、MASM、Irvine32)!你会遇到很多建议你改变它的人(用 BIOS、MS-DOS、Linux 做。用 GDI、OpenGL、DirectX 做。等等。)。您可能会在另一个环境中更好地解决问题,但您会遇到新问题,这些问题可以通过改变环境来解决。最后你将退出整个项目 - 未完成。
"$"
是MS-DOS字符串的终止符。在 Windows/Irvine32 中,您处理空终止。
甚至 Windows 的控制台模式也相当快。所以你需要 Irvine 的 Delay
函数来观看动画:
INCLUDE Irvine32.inc
.DATA
FIG0 DB 0DH,0AH,' +=======+',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG1 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG2 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG3 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/ \ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG4 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG5 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG6 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,'/ |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG7 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,'/ \ |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG8 DB 0DH,0AH,' +=======+',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' \O/ |',0DH,0AH,' | |',0DH,0AH,' | |',0DH,0AH,' / \ |',0DH,0AH,' ========+',0DH,0AH, 0
.CODE
main PROC
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG0
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG1
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG2
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG3
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG4
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr
lea edx, FIG5
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG6
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG7
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG8
call WriteString ; Irvine32: Write a string pointed to by EDX
exit ; Irvine32: ExitProcess
main ENDP
END main
ClrScr
is not ideal for your purpose since it clears the whole screen including the inputs. Use Irvine's GotoXY
。写空格删除旧图
有没有更好的打印刽子手模型的方法?
FIG0 DB 0DH,0AH,' +=======+',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG1 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG2 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG3 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/ \ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG4 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG5 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG6 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,'/ |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG7 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,'/ \ |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH,'$'
FIG8 DB 0DH,0AH,' +=======+',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' \O/ |',0DH,0AH,' | |',0DH,0AH,' | |',0DH,0AH,' / \ |',0DH,0AH,' ========+',0DH,0AH,'$'
这是一些不错的数字。 https://youtu.be/e2S_POws3DQ?t=42s
如果你赢了比赛,他跳起来的样子真的很酷。我尝试使用 call Clrscr 让他跳起来,但没有成功。
首先:不要更改您的环境(Windows、32 位、Console、MASM、Irvine32)!你会遇到很多建议你改变它的人(用 BIOS、MS-DOS、Linux 做。用 GDI、OpenGL、DirectX 做。等等。)。您可能会在另一个环境中更好地解决问题,但您会遇到新问题,这些问题可以通过改变环境来解决。最后你将退出整个项目 - 未完成。
"$"
是MS-DOS字符串的终止符。在 Windows/Irvine32 中,您处理空终止。
甚至 Windows 的控制台模式也相当快。所以你需要 Irvine 的 Delay
函数来观看动画:
INCLUDE Irvine32.inc
.DATA
FIG0 DB 0DH,0AH,' +=======+',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG1 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG2 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG3 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/ \ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG4 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG5 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG6 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,'/ |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG7 DB 0DH,0AH,' +=======+',0DH,0AH,' | |',0DH,0AH,' O |',0DH,0AH,'/|\ |',0DH,0AH,' | |',0DH,0AH,'/ \ |',0DH,0AH,' |',0DH,0AH,' ========+',0DH,0AH, 0
FIG8 DB 0DH,0AH,' +=======+',0DH,0AH,' |',0DH,0AH,' |',0DH,0AH,' \O/ |',0DH,0AH,' | |',0DH,0AH,' | |',0DH,0AH,' / \ |',0DH,0AH,' ========+',0DH,0AH, 0
.CODE
main PROC
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG0
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG1
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG2
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG3
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG4
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr
lea edx, FIG5
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG6
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG7
call WriteString ; Irvine32: Write a string pointed to by EDX
mov eax, 1000 ; 1000 milliseconds = 1 second
call Delay ; Irvine32: Delay ECX milliseconds
call ClrScr ; Irvine32; Clear Screen
lea edx, FIG8
call WriteString ; Irvine32: Write a string pointed to by EDX
exit ; Irvine32: ExitProcess
main ENDP
END main
ClrScr
is not ideal for your purpose since it clears the whole screen including the inputs. Use Irvine's GotoXY
。写空格删除旧图