该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

1.冒泡排序

.386

.model flat,stdcall

option casemap:none

includelib \masm32\lib\msvcrt.lib

printf proto C:dword,:vararg

.data

array dd 34,12,3,18

szMsg db "%d",0ah,0

.code

start:

mov ecx,3 ;N-1

L2:

push ecx

xor esi,esi

mov ecx,3 ;N-1

L0:

mov ebx,array[esi]

cmp ebx,array[esi 4]

jb L1

xchg ebx,array[esi 4]

mov array[esi],ebx

add esi,4

L1:

loop L0

pop ecx

loop L2

xor esi,esi

mov ecx,4

L3:

push ecx

invoke printf,offset szMsg,array[esi]

add esi,4

pop ecx

loop L3

ret

end start

2,题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

.386

.model flat,stdcall

option casemap:none

includelib \masm32\lib\msvcrt.lib

printf proto C:dword,:vararg

.data

canshu db "%d%d%d",0ah,0

x dd 1

y dd 1

z dd 1

.code

start:

mov ecx ,4

L0:

push ecx

mov y,1

mov ecx,4

push ecx

mov eax,x

L1:

cmp eax,y

jz L2

mov z,1

mov ecx ,4

L3:

push ecx

mov ebx,z

cmp ebx,x

jz L4

cmp ebx,y

jz L4

invoke printf ,offset canshu,x,y,z

L4:

inc z

pop ecx

loop L3

L2:

inc y

pop ecx

loop L1

inc x

pop ecx

loop L0

ret

end start

3 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

.386

.model flat,stdcall

option casemap:none

includelib \masm32\lib\msvcrt.lib

printf proto C:dword,:vararg

.data

szMsg db "%d",0ah,0

x dw 100 ;被除数16位

midvalue dw ? ;中间值16位

chushu db ? ;除数8位

.code

start:

L1:

mov chushu,9

inc x

L0:

inc chushu

mov ax,x

div chushu

cmp al,chushu ;al存商

ja L0

jb L1

cmp ah,0 ;ah存余数

ja L1

mov bx,x

mov midvalue,bx

add midvalue,168

L2:

mov ax,midvalue

inc chushu

div chushu

cmp al,chushu

ja L2

jb L1

cmp ah,0

ja L1

sub x,100

mov ax,x

cwde

invoke printf,offset szMsg,eax

ret

end start

4 题目:编写简单的交换数字的程序

c语言实现:

swap(*a,*b)

汇编实现:

.386

.model flat,stdcall

option casemap:none

includelib \masm32\lib\msvcrt.lib

printf proto C:dword,:vararg

.data

aa dword 8

bb dword 9

szMsg db "%d",0ah,0

.code

swapnum proc c a:ptr dword,b:ptr dword

local temp:dword

push eax

push ebx

push ecx

mov eax,a

mov ebx,ds:[eax];不要使用[a]的方式 ,mov ebx,[a]与mov ebx,a效果相同

mov temp ,ebx;[eax]为a

mov ecx,b

mov ebx,[ecx]

mov [eax],ebx

mov ebx,temp

mov [ecx],ebx

pop ecx

pop ebx

pop eax

ret

swapnum endp

start proc

invoke swapnum, offset aa, offset bb;与子程序参数要匹配

invoke printf,offset szMsg,aa

invoke printf,offset szMsg,bb

ret

start endp

end start

5.递归实现5的N次方

.386

.model flat,stdcall

option casemap:none

includelib \masm32\lib\msvcrt.lib

printf proto C:dword,:vararg

.data

szMsg db "%d",0ah,0

.code

power proc c n:dword

cmp n,0

jle L0

dec n

mov ebx,n;?????

invoke power,ebx

mov ecx,5;5是底数

imul ecx;结果实际保存在EDX:EAX,但我们假设不越界,即结果只在EAX,EDX为0

ret ;从子程序退出,相当于C语言的return

L0:

mov eax,1

ret

power endp

start:

invoke power,3;3是指数

invoke printf,offset szMsg,eax

ret

end start

6 字符串操作练习

.386

.model flat,stdcall

option casemap:none

includelib \masm32\lib\msvcrt.lib

printf proto C:dword,:vararg

.data

strsrc db "source string",0ah,0

strdst db 15 dup (?),0

szMsg db "%s",0ah,0

.code

strcopy proc

push ecx

push esi

push edi

mov ecx,lengthof strsrc

lea esi,strsrc

lea edi,strdst

cld ;df=0,esi edi是增加的

rep movsb

pop ecx

pop esi

pop edi

ret

strcopy endp

strdel proc c asc:byte ;传入将要删除的字符

push ecx

push esi

push edi

push ebx

xor ebx,ebx

mov ecx,lengthof strsrc

lea esi,strsrc

lea edi,strdst

L1:

cld

mov bl,asc

cmp [esi],bl

jnz L2

jz L0

L2:

movsb ;执行后esi,edi自动加1

jmp L3

L0:

inc esi

L3:

loop L1

pop ecx

pop esi

pop edi

pop ebx

ret

strdel endp

start:

;invoke strcopy

;invoke printf,offset szMsg,offset strdst

invoke strdel,'i'

invoke printf,offset szMsg,offset strdst

ret

end start

7 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

.386

.model flat,stdcall

option casemap:none

includelib \masm32\lib\msvcrt.lib

printf proto C:dword,:vararg

.data

strtest db "adsf",0

szMsg db "%d",0ah,0

numcount dword 0 ;数字个数

asccount dword 0 ;字母

spacecount dword 0 ;空格

othercount dword 0 ;其他字符

.code

start:

push esi

push ecx

push eax

lea esi,strtest

mov ecx,lengthof strtest

L0:

mov al,20h ;空格的ascii码为20h

cmp [esi],al

jnz L1

inc spacecount

jmp L4

L1:

mov al,'0'

cmp [esi],al;注意在以后的比较也是这样,不可以cmp al,[esi]

;因为比较的是[esi]中的数。

jb other

mov al,'9'

cmp [esi],al

ja L2

inc numcount

jmp L4

L2:

mov eax,'A'

cmp [esi],al

jb other

mov al,'Z'

cmp [esi],al

ja L3

inc asccount

jmp L4

L3:

mov al,'a'

cmp [esi],al

jb other

mov al,'z'

cmp [esi],al

ja other

inc asccount

jmp L4

other:

inc othercount

L4:

inc esi

loop L0

pop esi

pop ecx

pop eax

invoke printf,offset szMsg, numcount

invoke printf,offset szMsg, asccount

invoke printf,offset szMsg, spacecount

invoke printf,offset szMsg,othercount

ret

end start

c 汇编语言小程序100例,汇编语言100例相关推荐

  1. 【小程序】获取快递100物流信息

    [小程序]获取快递100物流信息 // 点击时间调用 getKdCookie // 中通查不到物流信息 // 小程序开发 要注意 url https 才行 getKdCookie(){wx.reque ...

  2. 微信小程序scroll-view高设置100%在苹果6p下的兼容性问题

    微信小程序scroll-view高设置100%在苹果6p下的兼容性问题 home.wxml <view class='main'><view class='crumbs'>&l ...

  3. dw网页插入java小程序_DW网页设计100例35:构建Java插入模块

    Java 是一种程序设计语言, Java applet ( Java 小程序)是在 Java 的基础上演变而成的.能够嵌入在网页中的.可以执行一定小任务的应用程序. 20060407140110aa1 ...

  4. python小程序代码50 到100行-Python代码不到四十行简单暴力,微信跳一跳小程序轻松过万...

    群内不定时分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流 最近微信有个小程序,并不知道大家有没有被这个游戏给刷屏,这个游戏就是跳一跳 今天就用P ...

  5. 微信小程序高度设置为100%

    在网页中设置body,html{height:100%}; 将body和html设置为100%,这样我们就可以在他们的子元素中使用height:100%来使的我们的容器元素占满屏幕的高度啦. 但是在微 ...

  6. 续集关于上次简单微信小程序制作 (快递100查询)

    上次给大家简单介绍了小程序的实现原理以及传统APP与小程序的对比,这次给大家点干货: 一,移动互联网的八大平台 IOS.Android.H5.BAT.头条.手机厂商 动态App平台阵营(H5.BAT. ...

  7. Zblog如何使用PHP插件搭建微信小程序-从0到100完整教程

    官方效果图: PS:下方步骤中文字颜色蓝色为重点关键字,红色字为可点击链接文字 准备工作: 1:微信小程序账号及微信开发者工具,没有或者不会注册请参考文章:微信小程序初章-注册微信小程序账户及安装微信 ...

  8. 用计算机汇编语言的程序是经过,汇编语言程序

    汇编语言程序也称为汇编语言源程序,就是用汇编语言编写的一种计算机程序, 属于计算机低级语言程序,是属性为ASM的源文件.汇编语言程序在经过汇编.链接后得到可执行程序即EXE文件. 汇编语言程序里面包括 ...

  9. 基于微信小程序的毕业设计题目50例

    基于微信小程序的毕业设计题目1-10题 1.基于微信小程序的线上交易平台 2.基于微信小程序的高职招生服务平台的设计与实现 3.基于微信小程序的图书馆座位预约系统的设计与实现 4.基于微信小程序的项目 ...

  10. 微信小程序的全局变量和单例

    每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数.错误监听和页面不存在监听函数等. 详细的参数含义和使用请参考 App 参考文档 . // app.js Ap ...

最新文章

  1. Quartus II11.0安装教程
  2. 如何使用知识图谱增强信息检索模型?
  3. r软件时间序列分析论文_高度比较的时间序列分析-一篇论文评论
  4. 认识网页 网页的组成 0907
  5. python测验9答案_【Python基础测试】你知道这些答案吗?
  6. 【带着canvas去流浪(14)】Three.js中凹浮雕模型的生成方式
  7. MySql计算百分比
  8. c语言酒店管理系统,C语言酒店管理系统.pdf
  9. 这样就算会了PHP么?-7
  10. 设计一个方法输入字符串,字节数,输出截取的字符串
  11. Spark SQL Catalyst源代码分析之Analyzer
  12. SPSS回归分析案例
  13. Android 中Goolgle 相关服务的移植[转]
  14. 站在巨人肩膀上优雅地分蛋糕
  15. 2019成长复盘2020成长规划
  16. ubuntu安装软件包命令
  17. tomcat宕机自动重启和每日定时启动tomcat
  18. 麒麟子Javascript游戏编程零基础教程一:序言
  19. java生成带星号条形码_Code39生成条形码加星号的解决办法以及当扫描枪扫描不到条码的解决办法 | 学步园...
  20. TMC4671-LA完全集成伺服控制器电机驱动芯片带FOC控制

热门文章

  1. java调用用友eai_U811.1接口EAI系列之二--生成销售出库单调用U8的EAI通用处理方法--PowerBuilder语言...
  2. win7计算机打开显卡设置在哪里,Win7系统nvidia控制面板在哪里?Win7系统nvidia控制面板设置方法...
  3. [GUET-CTF2019]re-[SUCTF2019]SignIn-相册-[ACTF新生赛2020]usualCrypt
  4. [NOIP2013]表达式求值
  5. pandorabox 潘多拉固件路由器作为无线打印机服务器记录
  6. 易灵思FPGA--PLL资源
  7. 读书笔记《浪潮之巅》感悟
  8. GD32使用IAR编程详细教程
  9. excel 汉字转拼音
  10. 擎标带你了解CMMI3与CMMI5的区别