汇编
Nick_Wang94
一只正在学习的程序猿
展开
-
汇编-判断素数
判断条件: for(int i = num/2; i>=2; i–) { if(num % i == 0) //被整除 //不是素数 }根据判断条件,有汇编程序:;功能:求2~100之间的所有素数;作者:王文堃;创建时间:2016/4/11INCLUDE vcIO.inc .data array DWORD 100 dup(0) str_o原创 2016-04-11 22:49:19 · 2342 阅读 · 0 评论 -
汇编-判断两个字符串是否相等
使用串操作: CMPSB|CMPSW|CMPSD ;字节串比较:DS:[ESI]-ES:[EDI] ;然后:ESI←ESI±1/2/4,EDI←EDI±1/2/4 REPE|REPZ ;执行一次串指令,ECX减1;直到ECX=0或ZF=0源程序如下:;功能:比较两个字符串是否相等;作者:王文堃;创建时间:2016/4/19INCLUDE vcIO.inc.d原创 2016-04-19 22:57:26 · 4729 阅读 · 0 评论 -
汇编-字符串的复制
将一个字符串复制给另一个字符串,我们可以逐个访问数组并进行逐个地赋值到新的数组中。但我们今天要介绍的是串指令。 MOVSB|MOVSW|MOVSD ;串传送:ES:[EDI]←DS:[ESI] ;然后:ESI←ESI±1/2/4,EDI←EDI±1/2/4 REP ;执行一次串指令,ECX减1;直到ECX=0下面是源程序:;功能:复制字符串;作者:王文堃;创建时原创 2016-04-19 22:54:20 · 5281 阅读 · 0 评论 -
汇编-求数组中所有偶数的和
程序重点:使用test命令来判断一个数是不是偶数,而不是使用除2求余数。使用除2求余数的方法太占寄存器了,设置被除数需要使用eax,设置除数需要一个寄存器,假定使用ebx,两者的商会存放到eax中,同时把余数存放到edx中。所以使用这种方法使用了三个寄存器。 而使用test这种方法就使得判断变得简单。 test des,src 的指令功能就是将des和src两个操作数进行与运算。原创 2016-04-19 20:58:11 · 8301 阅读 · 0 评论 -
汇编-求闰年
已知判断闰年的条件是: if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) printf(“year是闰年”); 所以,根据上述判断条件进行编写:;功能:求闰年;作者:王文堃;创建时间:2016/4/11INCLUDE vcIO.inc.data str_ouput BYTE "%d年是闰年",0ah,0原创 2016-04-11 21:31:15 · 682 阅读 · 0 评论 -
汇编-求两数最大公约数
最大公约数算法如下: gcd(num1,num2)=gcd(num2, num1 mod num2) gcd(num1 ,0)= num1 其中num1, num2 >=0根据算法有汇编程序如下:;功能:求两个数的最大公约数;作者:王文堃;创建时间:2016/4/11INCLUDE vcIO.inc.data str_input BYTE "请输入两个整数:",0ah,0原创 2016-04-11 20:45:10 · 4285 阅读 · 0 评论 -
汇编-分离一个整数的各个位
;功能:分离一个整数的各个位;作者:王文堃;创建时间:2016/4/11INCLUDE vcIO.inc.data num DWORD 123456 array BYTE 11 dup(0) str_ouput BYTE "字符化后的字符如下:%s",0ah,0.codemain PROC xor esi,esi ;esi记录放置字符的数组下标 mo原创 2016-04-11 20:17:44 · 1884 阅读 · 0 评论 -
汇编-测试回文串
;功能:测试回文串;作者:王文堃;创建时间:2016/4/10INCLUDE vcIO.inc.data array BYTE "lwasdffdsawl",0 str_error BYTE "该字符串不是回文串",0ah,0 str_ok BYTE "该字符串是回文串",0ah,0.codemain PROC xor esi, esi mov ed原创 2016-04-10 18:02:38 · 1730 阅读 · 0 评论 -
汇编-逆置一个数组
;功能:逆置一个数组;作者:王文堃;创建时间:2016/4/10INCLUDE vcIO.inc.data array DWORD 1,2,3,4,5 str_output BYTE "%5d".codemain PROC xor esi, esi ;赋值为0 mov edi, LENGTHOF array - 1 jmp TESTINGFORLOO原创 2016-04-10 17:33:44 · 923 阅读 · 0 评论 -
汇编-vcIO.inc
之前写的汇编程序中都包含了一个叫vcIO.inc的头文件 今天将简单了解一下这个头文件都干了什么事情为什么要使用这个头文件? 为了在汇编语言中使用c语言的printf和scanf等函数进行格式输出这个头文件存放在哪里? 笔者的存放路径是:D:\Visual Studio 2015\VC\include 即你安装vs的目录下的VC下的include文件夹中下面是头文件的内容:;原创 2016-04-25 20:17:45 · 3228 阅读 · 1 评论 -
汇编-通过子程序交换两个内存变量
交换两个内存变量相信大家都不陌生,核心的代码就是:;交换[esi],[edi]两个内存变量mov eax, [esi]xchg eax, [edi]mov [esi],eax然而现在我们要通过用汇编编写一段子程序来调用这个子程序来实现交换两个数,我们定义主函数给子函数传递的参数是以地址的形式(指针),传递需要交换的两个内存变量。 源程序如下:;功能:使用子程序交换两个内存变量;作者:王文堃原创 2016-04-20 18:55:22 · 3103 阅读 · 2 评论