visual studio 内联汇编问题

#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
char message1[]="Input the number of times for looping in the range of 0-12:";
char message9[] = "\nThe program will run";
char message10[] = "times.\n";
char message2[]="\nEnter an alphabet or a numeric digit:";
char message3[] = "Output:\n";
char message4[] = "\na.Number of upper-case alphabets made by user:%ecx\n";
char message5[]="\nb.Number of lower-case alphabets made by user: %ebx\n",edx;
char message6[]="\nc.Average of numeric inputs made by user: %eax\n",eax ;
char message7[] = "\nThe program exists without looping.";
char message8[] = "Type in any integer and press RETURN key to finish:";
char format[]="%u";
int times;
int counter;
int digit;
int end;

_asm {

    lea eax, message1;
    push eax;
    call printf;
    add esp, 4;

    lea eax, counter;
    push eax;
    lea eax, format;
    push eax;
    call scanf_s;
    add esp, 8;

    mov eax, counter;
    cmp eax, 0;
    jle nequal;

    lea eax, message9;
    push eax;
    call printf;
    add esp, 4;

    lea eax, times;
    push eax;
    lea eax, format;
    push eax;
    call printf;
    add esp, 4;

    lea eax, message10;
    push eax;
    call printf;
    add esp, 4;




    mov ebx, 0;
for_loop:
    lea eax, message2;
    push eax;
    call printf;
    add esp, 4;

    lea eax, digit;
    push eax;
    lea eax, format;
    push eax;
    call scanf_s;
    add esp, 8;
    inc ebx;
    cmp ebx, counter;

    jl for_loop;




Uppercase:

    lea eax, message3;
    push eax;
    call printf;
    add esp, 4;


    lea eax, message4;
    push eax;
    call printf;
    add esp, 4;

    mov ah, 1;
    cmp al, 'A';
    jb next1;
    cmp al, 'Z';
    ja next1;
    mov ecx, 0;
    inc ecx;
    jmp exit;




Lowercase:
next1:
    lea eax, message5;
    push eax;
    call printf;
    add esp, 4;
    cmp al, 'a';
    jb next2;
    cmp al, 'z';
    ja next2;
    mov edx, 0;
    inc edx;

    jmp exit;





Numeric:
next2:
    lea eax, message6;
    push eax;
    call printf;
    add esp, 4;
    cmp al, '0';
    jb next3;
    cmp al, '9';
    ja next3;

    mov eax, 0;
    add eax, digit;

    jmp exit;

next3:
    jl for_loop;


exit:


    jmp finish;

nequal:lea eax, message7;
    push eax;
    call printf;
    add esp, 4;

finish:lea eax, message8;
    push eax;
    call printf;
    add esp, 4;

    lea eax, end;
    push eax;
    lea eax, format;
    push eax;
    call scanf_s;
    add esp, 8;


}
return 0;

}
这样输出的数字会特别大。。我想输出我所输入的数字,问题在哪里。
以及如果我需要统计一句话中的字母和我所输入数字的平均值,应该怎么写代码?

2个回答

单步调试下,代码太多。

fancalvino
fancalvino char message9[] = "\nThe program will run"; 然后我之后用 lea eax, message9;和lea eax,counter但是没有办法输出我一开始所输入的数字
4 年多之前 回复

1、打开工作区时出现了如下错误: cannot access the ClassView information file.ClassView information will not be available.解决方法:a.关闭工程b.删除工程下.clw .ncb 文件及/debug目录,c.重建工程build all......
答案就在这里:Visual studio 常见问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用visual studio编写汇编语言 输入自己名字的拼音 倒着输出并显示输入了多少个字母

用visual studio编写汇编语言 输入自己名字的拼音 倒着输出并显示输入了多少个字母例如 input: Zhang San output: naS gnahZ length: 8 求包含头文件的完整程序! ⚠️汇编语言! ⚠️能复制过去直接用visual studio运行! 感谢!

关于C++内联汇编的问题

__declspec(naked) void ResumeOpenProcess() { __asm { nop nop nop nop nop nop nop nop nop nop nop call ShowDbg mov eax,g_uOpenProcessRetAddr jmp eax } } 以上函数是我写的一个内联汇编,在一开始的处理函数中我拷贝了5个字节的内容进去,所以我在函数汇编开始多写了几个NOP,看过一个视频教程说多写几个NOP并不影响什么,而且自己在驱动编程中做过测试 确实行的通,但是这是在ring3下写的,我动态跟进去后发现,这个函数把我一开始拷贝的5个字节执行了之后就没有我下面写的几句代码了,而是int 3,一执行 程序直接退出,不知道是什么原因导致的,还是我的内联汇编写的哪里有问题,求指教。

内联汇编中使用call出错

环境:win10,x64,vs2017,编译器用的intel parallel studio XE2019 问题:在dll中执行GetModuleHandle(modName),函数可以正常执行,写内联汇编 __asm{ lea rcx,modName call GetModuleHandle } 就会执行出错,反汇编后发现c++写的代码,call GetModuleHandle时是正确的地址,而内联的时候是错的,指向当前模块的某个地址,后来试验在主进程中用call也是一样的错误,百度了很久也没找到是什么原因,求问内联汇编中应该怎么用call

VisualStudio与C++混合编程

我想利用Matlab和C混合编程,然后目前是照着知乎上一个回答的方法来做的,链接如下: https://zhuanlan.zhihu.com/p/59998696?utm_source=wechat_session&utm_medium=social&utm_oi=901091689538686976&from=singlemessage 但是我按照他的步骤来做以后还是有问题。我的IDE是vs2015和matlab2016a 现在的问题是,我每次打开VS在调试里面点了附加进程,附加到matlab上之后,matlab里的脚本一开始跑,都还没有跑到我调用的那个C程序,VS就开始报错,报错报的是访问冲突,如下两图 ![图片说明](https://img-ask.csdn.net/upload/202004/20/1587390009_535955.png) ![图片说明](https://img-ask.csdn.net/upload/202004/20/1587390020_958585.png) 求大神帮忙解决一下,感激不尽!

C语言内联汇编跳转语句的一些问题

跳转指令,该如何跳到下几条指令处,请大牛们指点下,代码如下! ``` __asm { push eax push ecx push edx push ebx mov eax, [ebp + 8] mov edx, [ebp + 0xC] mov edx, [edx] mov ebx, [edx + 4] lea edx, [edx+8] L1 test ebx,ebx je L2 //跳到L2处 mov cl, [edx] mov [eax],cl inc eax inc edx dec ebx jmp L1 //跳到L1处 L2 pop ebx pop ecx pop eax } ```

内联汇编实现printf的调用

请大家看下这段代码,平衡堆栈处会报runtime error,有哪位高人告诉我哪里有问题,编译环境是vs 2010我的机器是64位win7 #include <stdio.h> char format[] = "%s %s\n"; char hello[] = "Hello"; char world[] = "world"; int main() { __asm { push offset world push offset hello push offset format call printf pop ebx pop ebx pop ebx } }

内联汇编向int变量中输入字符报错的问题

在VC内联汇编中, myarray[]是个int型的数组 用循环来输入数组,以下是循环内的代码 C/C++ code char inputformat[]="%d"; Assembly code lea eax,myarray[ebx]; // push eax; // lea eax,inputformat; // achieve the number input push eax; // call scanf; // add esp,8; // 输入数字都不会有问题,一旦输入字母,就会无限循环.请问如何处理这种问题啊? 谢谢各位汇编大神~

汇编初学者问题,求解答(内联汇编)

在c语言内联汇编中如何实现判断输入内容格式是否为数字a,比如1a,2a,20a等。本人初学者,求帮助,万分感谢!提供个思路也行~

VS2008使用内联汇编,Debug没有问题, Release就报错

编译器是VS2008, Debug没有问题, Release就报错,求大师指点。 .\***.cpp(147) : error C2420: “memset”: 第一操作数 中的非法符号 .\***.cpp(147) : error C2415: 不正确的操作数类型 __asm { push 10 push 0 push eax call memset }

在vs2017写汇编的问题。。本人大一。。请求指点

1.问题有两个: (1)设置了断点,但是调试时还是控制台窗口一闪就过,并且链接器选项里的子系统已经选为控制台,平台设置为所有平台; (2)生成project时输出窗口报告:"warning LNK4258: 指令“/ENTRY:main@0”与开关“/ENTRY:main”不兼容;已忽略",LNK4258在"http://docs.microsoft.com"找不到相关信息,bing也无法找到(已切换为国际版)。 2. 我的代码如下: .386 .model flat,stdcall .stack 4096 ExitProcess proto,dwExitCode:dword .code main proc mov eax,5 ;此行有断点 add eax,6 invoke ExitProcess,0 main endp end main 3.这里新手,问题愚蠢,请大家多多包涵,非常感谢。

内联汇编语法问题 输出操作数

编译器用的是devc++,编译时报错[Error] invalid 'asm': operand number out of range。 出错语句为:asm ("movl %1, %%eax"::"r"(no):"%eax"); 如果加上一个输出操作数就能通过编译,这是为什么?对于不需要输出操作数的语句应该怎么处理?

Go代码中可以包含内联汇编吗?

<div class="post-text" itemprop="text"> <p>Is it possible to include inline assembly in Go code?</p> </div>

求解,gcc内联汇编标号编译报错

``` unsigned long strcpy0(char* dst,const char* src) { __asm__ __volatile__ ( ".intel_syntax noprefix\n" "POS2:\n" "lodsb\n" "stosb\n" "test al,al\n" "jnz POS2\n" : : :"rax","bl" ); } ``` 上面代码使用gcc编译的时候报错,请问该怎么解决: gcc -masm=intel -O3 -c -o test.o test.c test.c: Assembler messages: test.c:7: Error: symbol `POS2' is already defined test.c:7: Error: symbol `POS2' is already defined test.c:7: Error: symbol `POS2' is already defined

VC++内联汇编要怎么将char 转换为int

我的代码是先输入char格式。。然后我选出其中的数字再转换为int格式最后算出平均值。。要怎么做

MSVS内联汇编 键入数据 输出发生问题

![图片说明](https://img-ask.csdn.net/upload/201710/21/1508596855_105454.png) 求大神解答一下为什么输出总是错误 前面有一个char message1 char %d 还有一个int counter

请教一个关于C语言指针在内联汇编时的问题

如图 ,在内联的汇编编码中,mov edi p就可以成功运行, mov edi teststr就会发生“操作数大小冲突”错误,这是为什么? 这里的p和teststr明明是同一块地址啊![图片说明](https://img-ask.csdn.net/upload/201610/14/1476437463_823582.png)

求解,gcc编译c++内联汇编编译后原始代码被修改的问题

c++内联汇编代码,内存访问处的代码,g++编译之后出现问题: 原始代码: ``` 1 int main() 2 { 3 unsigned long tmp = 0; 4 __asm__ __volatile__ 5 ( 6 ".intel_syntax noprefix\n" 7 "mov rax,%0\n" 8 "mov rbx,1\n" 9 "mov qword [rax],rbx" 10 : 11 :"r"(&tmp) 12 :"rax","rbx" 13 ); 14 return 0; 15 } ``` 编译后反汇编代码如下: ``` 0x00000000004004fa <+13>: lea rdx,[rbp-0x10] 0x00000000004004fe <+17>: mov rax,rdx 0x0000000000400501 <+20>: mov rbx,0x1 0x0000000000400508 <+27>: mov QWORD PTR [rax+0x8],rbx ``` 为什么这一句 mov qword [rax],rbx 编译之后变成 mov QWORD PTR [rax+0x8],rbx

使用内联汇编程序用C调用golang函数时,对于'mov'的内存引用过多

<div class="post-text" itemprop="text"> <p>I'm trying to call a golang function from my C code. Golang does not use the standard x86_64 calling convention, so I have to resort to implementing the transition myself. As gcc does not want to mix cdecl with the x86_64 convention, I'm trying to call the function using inline assembly:</p> <pre><code>void go_func(struct go_String filename, void* key, int error){ void* f_address = (void*)SAVEECDSA; asm volatile(" sub rsp, 0xe0; \t \ mov [rsp+0xe0], rbp; \t \ mov [rsp], %0; \t \ mov [rsp+0x8], %1; \t \ mov [rsp+0x18], %2; \t \ call %3; \t \ mov rbp, [rsp+0xe0]; \t \ add rsp, 0xe0;" : : "g"(filename.str), "g"(filename.len), "g"(key), "g"(f_address) : ); return; } </code></pre> <p>Sadly the compiler always throws an error at me that I dont understand:</p> <pre><code>./code.c:241: Error: too many memory references for `mov' </code></pre> <p>This corresponds to this line: <code>mov [rsp+0x18], %2; \t \</code> If I delete it, the compilation works. I don't understand what my mistake is...</p> <p>I'm compiling with the -masm=intel flag so I use Intel syntax. Can someone please help me?</p> </div>

c内嵌汇编不能使用fs寄存器

写seh在DEBUG模式运行 正常 在release模式提示:内联 asm 分配到“FS:0”: 处理程序未注册为安全处理程序 代码 __asm{ push offset _except_handler push fs : [0] mov fs : [0], esp mov eax,0 mov dword ptr[eax],eax } 这应该怎么做

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

sql语句 异常 Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your

在我们开发的工程中,有时候会报 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ------ 这种异常 不用多想,肯定是我们的sql语句出现问题,下面...

浪潮集团 往年的软件类 笔试题 比较详细的哦

浪潮集团 往年的软件类 笔试题 比较详细的哦

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

I2c串口通信实现加速度传感器和FPGA的交流

此代码能实现加速度传感器与FPGA之间的交流,从而测出运动物体的加速度。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

eclipseme 1.7.9

eclipse 出了新的eclipseme插件,官方有下载,但特慢,我都下了大半天(可能自己网速差)。有急需要的朋友可以下哦。。。

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

最简单的倍频verilog程序(Quartus II)

一个工程文件 几段简单的代码 一个输入一个输出(50Mhz倍频到100Mhz)

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

基于RSA通信密钥分发的加密通信

基于RSA通信密钥分发的加密通信,采用pycrypto中的RSA、AES模块实现

不同变质程度煤尘爆炸残留气体特征研究

为分析不同变质程度煤尘爆炸残留气体成分的特征规律,利用水平管道煤尘爆炸实验装置进行了贫瘦煤、肥煤、气煤、长焰煤4种不同变质程度的煤尘爆炸实验,研究了不同变质程度煤尘爆炸后气体残留物含量的差异,并对气体

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

jsp+servlet入门项目实例

jsp+servlet实现班级信息管理项目

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

python实现数字水印添加与提取及鲁棒性测试(GUI,基于DCT,含测试图片)

由python写的GUI,可以实现数字水印的添加与提取,提取是根据添加系数的相关性,实现了盲提取。含有两种攻击测试方法(高斯低通滤波、高斯白噪声)。基于python2.7,watermark.py为主

Xshell6完美破解版,亲测可用

Xshell6破解版,亲测可用,分享给大家。直接解压即可使用

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问