用汇编写的一个 敲7控制台程序不知道哪部分有问题
时间:2011-10-09
来源:互联网
include F:\huibian\huibian.h
include D:\masm32\include\msvcrt.inc
includelib D:\masm32\lib\msvcrt.lib
.data
sNum dd ?
sNum1 dd ?
sNum2 dd ?
.const
sNotice db '请输入你想要的敲⑦范围:',‘0dh,0ah',0
sScanf db '%l',0
sString db '-------------------------------',0
sSub db '-------------------------------'
db '符合要求的数总的有:%d',0
.code
start:
invoke StdOut,addr sNotice
invoke crt_scanf,addr sScanf,addr sNum
invoke StdOut,sString
mov ebx,7
mov ecx,10
mov eax,7
mov sNum1,eax
mov sNum2,0
.while eax<=sNum
div ebx
;判断是否是7的倍数
.if edx==0
invoke crt_printf,addr sScanf,addr sNum1 ;为什么输出时对字符串后面的0ah,0dh不编译回车换行直接输出
inc sNum2
call @F
.elseif eax<7
invoke StdOut,addr sString
call @F
;判断是否含有7这个数
.elseif
.while eax
div ecx
.break .if edx==7
sub edx,edx
.endw
.if eax!=0
invoke crt_printf,addr sScanf,addr sNum1
inc sNum2
call @F
.endif
.endif
@@:
inc sNum1
mov eax,sNum1
.endw
invoke crt_printf,addr sSub,addr sNum2
invoke StdIn,NULL,NULL
invoke ExitProcess,NULL
end start
include D:\masm32\include\msvcrt.inc
includelib D:\masm32\lib\msvcrt.lib
.data
sNum dd ?
sNum1 dd ?
sNum2 dd ?
.const
sNotice db '请输入你想要的敲⑦范围:',‘0dh,0ah',0
sScanf db '%l',0
sString db '-------------------------------',0
sSub db '-------------------------------'
db '符合要求的数总的有:%d',0
.code
start:
invoke StdOut,addr sNotice
invoke crt_scanf,addr sScanf,addr sNum
invoke StdOut,sString
mov ebx,7
mov ecx,10
mov eax,7
mov sNum1,eax
mov sNum2,0
.while eax<=sNum
div ebx
;判断是否是7的倍数
.if edx==0
invoke crt_printf,addr sScanf,addr sNum1 ;为什么输出时对字符串后面的0ah,0dh不编译回车换行直接输出
inc sNum2
call @F
.elseif eax<7
invoke StdOut,addr sString
call @F
;判断是否含有7这个数
.elseif
.while eax
div ecx
.break .if edx==7
sub edx,edx
.endw
.if eax!=0
invoke crt_printf,addr sScanf,addr sNum1
inc sNum2
call @F
.endif
.endif
@@:
inc sNum1
mov eax,sNum1
.endw
invoke crt_printf,addr sSub,addr sNum2
invoke StdIn,NULL,NULL
invoke ExitProcess,NULL
end start
作者: xiaozhou10 发布时间: 2011-10-09
是说 crt_printf 将 0dh,0ah 输出成图形符号了?这应该是该函数的特点吧。换个通常的 printf() 函数试试了。
作者: zara 发布时间: 2011-10-09
你应该用:
sNotice db '请输入你想要的敲⑦范围:',0dh,0ah,0
sNotice db '请输入你想要的敲⑦范围:',0dh,0ah,0
作者: G_Spider 发布时间: 2011-10-09
引用 2 楼 g_spider 的回复:
你应该用:
sNotice db '请输入你想要的敲⑦范围:',0dh,0ah,0
你应该用:
sNotice db '请输入你想要的敲⑦范围:',0dh,0ah,0
谢谢回车换行解决了
但是这个程序可以通过编译运行输入数据后就出错不知道哪错
作者: xiaozhou10 发布时间: 2011-10-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28