汇编语言编程如何输出A~Z并将显示结果重复5次后退出 5
1个回答
展开全部
.386
.model flat,stdcall
option casemap:none
includelib msvcrt.lib
printf PROTO C :DWORD,:vararg
system PROTO C :DWORD
.data
str1 BYTE "%c",0aH,0 ;输出字符串
str2 BYTE "pause",0aH,0 ;系统函数system停下来的调用字符串
letter DWORD 65 ;字符A
cout1 DWORD 26 ;计数器共26个字母
cout2 DWORD 6 ;循环5次的计数器。。这里为什么是6往下看
.code
start:
a1:
MOV EDX,1
SUB cout2,EDX ;6-1=5次循环,这里是便于跳转
MOV EDX,26
MOV cout1,EDX ;循环后初始化cout1
MOV EDX,65
MOV letter,EDX ;循环后初始化letter
MOV EDX,0
CMP EDX,cout2 ;5次循环完了?
JE ending
a2:
MOV EDX,0 ;小循环26次完了?
CMP EDX,cout1
JE a1
INVOKE printf,offset str1,letter ;输出字符
MOV EAX,1
ADD letter,EAX ;字符自加一
SUB cout1,EAX ;计数器自减1
JMP a2
ending:
invoke system,offset str2 ;暂停,观察结果
ret
end start
;程序写的有点小麻烦,其实可以写的更简单的,
;比如比较时直接比较字符是否为“Z”,而不是比较计数器cout1
.model flat,stdcall
option casemap:none
includelib msvcrt.lib
printf PROTO C :DWORD,:vararg
system PROTO C :DWORD
.data
str1 BYTE "%c",0aH,0 ;输出字符串
str2 BYTE "pause",0aH,0 ;系统函数system停下来的调用字符串
letter DWORD 65 ;字符A
cout1 DWORD 26 ;计数器共26个字母
cout2 DWORD 6 ;循环5次的计数器。。这里为什么是6往下看
.code
start:
a1:
MOV EDX,1
SUB cout2,EDX ;6-1=5次循环,这里是便于跳转
MOV EDX,26
MOV cout1,EDX ;循环后初始化cout1
MOV EDX,65
MOV letter,EDX ;循环后初始化letter
MOV EDX,0
CMP EDX,cout2 ;5次循环完了?
JE ending
a2:
MOV EDX,0 ;小循环26次完了?
CMP EDX,cout1
JE a1
INVOKE printf,offset str1,letter ;输出字符
MOV EAX,1
ADD letter,EAX ;字符自加一
SUB cout1,EAX ;计数器自减1
JMP a2
ending:
invoke system,offset str2 ;暂停,观察结果
ret
end start
;程序写的有点小麻烦,其实可以写的更简单的,
;比如比较时直接比较字符是否为“Z”,而不是比较计数器cout1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询