|
本帖最后由 wl1383838438 于 2020-5-8 00:53 编辑
C++代码比较入门的,所以这里不在做多解说,
#include<iostream>
using namespace std;
int main()
{
int chioce;
cout << "请输入一个数字10,20,30,40\n";
cin >> chioce;
switch (chioce)
{
case 10:
cout << "a=10\n";
getchar();
break;
case 20:
cout << "a=20\n";
getchar();
break;
case 30:
cout << "a=30\n";
getchar();
break;
case 40:
cout << "a=40\n";
getchar();
break;
default:
break; cout << "请按照提示输入!\n";
}
getchar();
return 0;
}
-----------------------------------------------分割线-------------------------------------------------------------
该代码在RadMasm编译器以及Masm32编译器中编译过
.386;---------------指定指令集,告诉比编译器我们能将使用80386的指令集这句是必须的即使你不写这句那么也会
;使用其他的指令集 如.486.586.386p.486p这2个是特权的指令集
.model flat,stdcall;内存的模式和调用的约定,在win32中你只能使用一个模式即flat模式,因为win32的程序来说
;内存是连续的4GB的段,无所谓大小,而stdcall告诉编译器参数的传递方式,在调用子程序时,参数是通过堆栈传递的
;参数的传递方式又3中srdcall 和pascal stdcall指定了参数从右边到左边压入堆栈
option casemap:none;----大小写敏感
;-------------包含需要调用的库文件
include C:\masm32\include\windows.inc
include C:\masm32\include\user32.inc
includelib C:\masm32\lib\user32.lib
include C:\masm32\include\kernel32.inc
includelib C:\masm32\lib\kernel32.lib
.data;-------------预定义的数据初始化段
a dd 40
szCaption db '结果',0
szText1 db 'a的10',0
szText2 db 'a的20',0
szText3 db 'a的30',0
szText4 db 'a的40',0
.data?;------------用来放未初始化的数据段,该字段下的变量并不会暂用exe的大小,而是在程序执行时动态分配的
;所以在开始不指定初始值的数据可以放在.data?中,
.code ;指明了 接下来是代码段,我们的代码应该放在这里, start指明了 程序从这里开始,
start:;程序开始-----------------仿C++的switch判断语句
mov eax,a
cmp eax,10
je code1
cmp eax,20;对比eax中的值成立则je跳转
je code2;je语句在相等时后跳转ZF位 为1时
cmp eax,30
je code3
cmp eax,40
jmp code4
code1:
push 0
push offset szCaption
push offset szText1
push 0
call MessageBox
jmp code5
;--------------------------------------
code2:
push 0
push offset szCaption
push offset szText2
push 0
call MessageBox
jmp code5
;--------------------------------------
code3:
push 0
push offset szCaption
push offset szText3
push 0
call MessageBox
jmp code5
;--------------------------------------
code4:
push 0
push offset szCaption
push offset szText4
push 0
call MessageBox
jmp code5
code5:
push 0
call ExitProcess;退出当前的线程
end start;程序结束
----------------------------------------------分割线---
|
上一篇: 汇编指令 -> 英文下一篇: win32汇编的自加与VS的自加
|