汇编语言-008(条件跳转应用 、loopnz 条件循环指令使用 、loopz 条件循环指令使用 、 if语句编写汇编时 、while语句编写汇编时 、循环内的if语句嵌套)

1: 条件跳转应用,三个数中最小数

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
V1 WORD 1
V2 WORD 2
V3 WORD 3.code
main PROCmov ax,V1  ;假设V1是最小值cmp ax,V2  ;如果AX小于等于V2jbe L1mov ax,v2 
L1:cmp ax,V3jbe L2mov ax,V3
L2:INVOKE ExitProcess,0
main ENDP
END main

2: 条件跳转应用,循环直到按下按键

.386
.model flat,stdcallinclude Irvine32.inc.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
char BYTE ?.code
main PROCL1:mov eax,10call Delay  ;10毫秒的延迟call ReadKey ;检查按键jz L1        ;如果没有按键就循环mov char,AL  ;保存字符INVOKE ExitProcess,0
main ENDP
END main

3: 条件跳转应用,顺序搜索数组

.386
.model flat,stdcallinclude Irvine32.inc.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
intArray SWORD 0,0,0,0,1,20,35,-12,66,4,0
noneMsg BYTE "A non-zero value was not found",0.code
main PROCmov ebx,OFFSET intArraymov ecx,LENGTHOF intArray
L1:cmp WORD PTR[ebx],0jnz foundadd ebx,2loop L1jmp notFound
found:movsx eax,WORD PTR[ebx]call WriteIntjmp quit
notFound:mov edx,OFFSET noneMsgcall WriteString
quit:call CrlfINVOKE ExitProcess,0
main ENDP
END main

4: 条件跳转应用,简单字符串加密

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORDinclude Irvine32.incKEY = 239
BUFMAX = 128.data
sPrompt BYTE "Enter the plain text:",0
sEncrypt BYTE "Cipher text: ",0
sDecrypt BYTE "Decrypted:  ",0
buffer BYTE BUFMAX+1 DUP(0)
bufSize DWORD ?.code
main PROCcall InputTheStringcall TranslateBuffermov edx,OFFSET sEncryptcall DisplayMessagecall TranslateBuffermov edx,OFFSET sDecryptcall DisplayMessageINVOKE ExitProcess,0
main ENDP;提示用户输入一个纯文本字符串
;保存字符串和它的长度
;接收:无
;返回:无
InputTheString PROCpushadmov edx,OFFSET sPromptcall WriteStringmov ecx,BUFMAXmov edx,OFFSET buffercall ReadStringmov bufSize,eaxcall Crlfpopadret
InputTheString ENDP;显示加密或解密消息
;接收:EDX指向消息
;返回:无
DisplayMessage PROCpushadcall WriteStringmov edx,OFFSET buffercall WriteStringcall Crlfcall Crlfpopadret
DisplayMessage ENDP;字符串的每个字符与密钥字节进行异或实现转换
;接收:无
;返回:无
TranslateBuffer PROCpushadmov ecx,bufSizemov esi,0
L1:xor buffer[esi],KEYinc esiloop L1popadret
TranslateBuffer ENDP
END main

5: loopnz 条件循环指令使用,查找数组第一个非负数

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
array SWORD -3,-6,-1,-10,10,30,40,4
sentinel SWORD 0.code
main PROCmov esi,OFFSET arraymov ecx,LENGTHOF array
L1:test WORD PTR[esi],8000h  ;测试符号位pushfd                    ;标志位入栈add esi,TYPE array        ;移动到下一个位置popfdloopnz L1                 ;当ZF=0时继续循环  jnz quit                  ;没有发现非负数sub esi,TYPE array        ;ESI指向数值
quit:INVOKE ExitProcess,0main ENDP
END main

6: loopz 条件循环指令使用,查找数组第一个负数

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
array SWORD 3,6,1,10,-10,-30,-40,-4
sentinel SWORD 0.code
main PROCmov esi,OFFSET arraymov ecx,LENGTHOF array
L1:test WORD PTR[esi],8000h  ;测试符号位pushfd                    ;标志位入栈add esi,TYPE array        ;移动到下一个位置popfdloopz L1                  ;当ZF=1时继续循环  jz quit                  ;没有发现非负数sub esi,TYPE array        ;ESI指向数值
quit:INVOKE ExitProcess,0main ENDP
END main

7: if语句编写汇编时的情况

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD;if(al > bl) & (bl > cl)
;  X = 1.data
X DWORD ?.code
main PROCINVOKE ExitProcess,0
main ENDPproc_1 PROCcmp al,blja L1jmp nextL1:cmp bl,clja L2jmp nextL2:mov X,1next:
proc_1 ENDP;如果将ja 换成 jbe,代码减少2条
proc_2 PROCcmp al,bljbe nextcmp bl,cljbe nextmov X,1next:proc_2 ENDPEND main

8: if语句编写汇编时的情况

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
X DWORD ?;if(al > bl) || (bl > cl)
;X =1.code
main PROCcmp al,blja L1cmp bl,cljbe next
L1: mov X,1
next:INVOKE ExitProcess,0
main ENDP
END main

9: while语句编写汇编时的情况

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
val1 DWORD 10
val2 DWORD 20;while (val1 < val2)
;{
;   val1 ++;
;   val2 --;
;}.code
main PROCmov eax,val1
beginwhile:cmp eax,val2jnl endwhileinc eaxdec val2jmp beginwhile
endwhile:mov val1,eaxINVOKE ExitProcess,0
main ENDP
END main

10: 循环内的if语句嵌套

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
sum DWORD 0
sample DWORD 50   ;计算数组所有大于sample的数之和
array DWORD 10,60,20,33,72,89,45,72,18
arraySize = ($ - array)/TYPE array.code
main PROCmov eax,0mov edx,samplemov esi,0mov ecx,arraySize
L1:cmp esi,ecxjl L2jmp L5
L2:cmp array[esi*4],edxjg L3jmp L4
L3:add eax,array[esi*4]
L4:inc esijmp L1
L5:mov sum,eaxINVOKE ExitProcess,0
main ENDP
END main

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java jar包示例_Java包isCompatibleWith()方法与示例

java jar包示例包类的isCompatibleWith()方法 (Package Class isCompatibleWith() method) isCompatibleWith() method is available in java.lang package. isCompatibleWith()方法在java.lang包中可用。 isCompatibleWith() method is used to check the specification versi…

面向对象的JavaScript编程

Javascript对于做过Web程序的人不应该是陌生&#xff0c;初期是用来做一些简单的FORM验证&#xff0c;基本上是在玩弄一些技巧性的东西。IE 4.0引入了DHTML&#xff0c;同时为了对抗Netscape的Javascript,提出了自己的脚本语言JScript&#xff0c;除了遵循EMAC的标准之外&#…

实验3 SQL Server 表中记录更新操作

实验3 SQL Server 表中记录更新操作一、实验目的 1.掌握INSERT INTO语句的方法。 2.了解INSERT FROM语句的方法。 3.掌握UPDATE语句的方法。 4.掌握DELETE语句的方法。 二、实验要求 1.在已经创建好的eshop数据库中的各表中添加样例数据。 三、实验步骤 1.在eshop数据库的memb…

HTML 5 标签

HTML 5 <nav> 标签 定义和用法 <nav> 标签定义导航链接的部分。 实例 <nav> <a href"index.asp">Home</a> <a href"html5_meter.asp">Previous</a> <a href"html5_noscript.asp">Next</a>…

Assert和异常处理

Assert用于检查不应该发生情况&#xff0c;用来帮助开发人员对问题的快速定位。异常处理用于对程序发生异常情况的处理&#xff0c;增强程序的健壮性、容错性&#xff0c;减少程序使用中对用户不有好的行为&#xff0c;不让(通常也不必)用户知道发生了什么错误。实际开发中&…

tooctalstring_Java Long类toOctalString()方法的示例

tooctalstring长类toOctalString()方法 (Long class toOctalString() method) toOctalString() method is available in java.lang package. toOctalString()方法在java.lang包中可用。 toOctalString() method is used to represent an octal string of the given parameter […

汇编语言-009(表驱动选择 、条件控制流伪指令 、逻辑移位SHL,SHR 算术移位SAL,SAR)

1&#xff1a; 表驱动选择&#xff0c;用查表来代替多路选择结构的一种方法 .386 .model flat,stdcallinclude Irvine32.inc.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data CaseTable BYTE A ;查询值DWORD Process_A ;过程地址 EntrySize ($ - CaseT…

如何解决EDM邮件营销中的图片难题

随着互联网的高速发展&#xff0c;已然进入到了读图时代&#xff0c;EDM邮件营销尤为注重图片的运用。纯文本的邮件太枯燥&#xff0c;巧借图片&#xff0c;可以提高内容的可读性&#xff0c;吸引用户注意力。然而&#xff0c;我们却常常不得不面对这样的尴尬&#xff1a;打开邮…

实验2 SQL Server 表操作

实验2 SQL Server 表操作一、实验目的 1.了解表设计和表结构相关知识。 2.掌握管理工具创建、修改、查看和删除表的方法。 3.掌握T-SQL语句创建、修改、查看和删除表的方法。 4.了解表和数据库的关系。 二、实验要求 1.创建好的“网上购物系统”数据库eshop中的members表、pro…

深入理解.net的事件与委托机制

首先介绍一个为什么要在事件中引入委托这个概念&#xff1a;  事件是对象发送的消息&#xff0c;以发信号通知操作的发生。操作可能是由用户交互&#xff08;例如鼠标单击&#xff09;引起的&#xff0c;也可能是由某些其他的程序逻辑触发的。引发事件的对象称为事件发送方。…

Java ObjectOutputStream flush()方法与示例

ObjectOutputStream类flush()方法 (ObjectOutputStream Class flush() method) flush() method is available in java.io package. flush()方法在java.io包中可用。 flush() method is used to flush this stream and write bytes immediately of any buffered output to the u…

ffmpeg 命令裁剪合并

1 mp4格式&#xff1a; 裁剪从一个视频中的1分钟、2分钟、3分钟开始截取10秒 ffmpeg -i test_1280x720.mp4 -ss 00:01:00 -t 10 -codec copy copy1.mp4 ffmpeg -i test_1280x720.mp4 -ss 00:02:00 -t 10 -codec copy copy2.mp4 ffmpeg -i test_1280x720.mp4 -ss 00:03:00 -t 10…

Struts2初始化流程及源码分析

1.1 Struts2初始化 在讲Struts2的初始化之前&#xff0c;应该为大家描述下Web应用中的过滤器Filter&#xff0c;这关系到我们对核心过滤器FilterDispatcher的正确理解。 Filter&#xff1a;一个filter是一个对象&#xff0c;为每个请求资源(一个servlet或静态内容) &#xff0c…

实验1 数据库操作

实验1 数据库操作一、实验目的 1.掌握管理工具、T-SQL创建数据库的方法。 2.掌握管理工具、T-SQL修改和查看数据库的方法。 3.掌握管理工具、T-SQL删除数据库的方法。 4.掌握数据库的附加与分离 二、实验要求 1.创建实验所用到的“网上购物系统”数据库eshop。 三、实验内容 1…

Java FileInputStream finalize()方法与示例

FileInputStream类的finalize()方法 (FileInputStream Class finalize() method) finalize() method is available in java.io package. finalize()方法在java.io包中可用。 finalize() method is used to assure that close() method of this FileInputStream invokes when th…

逆风飞扬,吴仁宏

摘自逆风飞扬,吴仁宏自传 它是一个从"生而自卑"到"个性飞扬"的故事&#xff0c;当然具有传奇色彩 中国人几千年都不是天生的赢家&#xff0c;让我们努力&#xff0c;为国为家为自己&#xff0c;做赢家&#xff01; 生存哲学 尼采 痛苦,挫折使生命迁长,使人…

ffmpeg 命令图片和视频相互转换

1当前文件环境&#xff1a; ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.jpg ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.bmp 使用ffplay test.jpb ffplay test.bmp 都是可以打开的 参数介绍&#xff1a; -y 如…

如何点击链接直接跳转到app store指定应用下载页面

转载自&#xff1a;http://blog.csdn.net/zengconggen/article/details/6789420 NSString *str [NSString stringWithFormat:"http://itunes.apple.com/us/app/id%d", 436957167]; [[UIApplication sharedApplication] openURL:[NSURL urlWithString:str]];其中&…

COLLEGE.sql(复制的时候注意路径!!!)

USE [master] GO /****** Object: Database [COLLEGE] Script Date: 2019/11/25 星期一 上午 08:57:11 / CREATE DATABASE [COLLEGE] ON PRIMARY ( NAME N’COLLEGE_m’, FILENAME N’F:\COLLEGE\COLLEGE.mdf’ , SIZE 51200KB , MAXSIZE UNLIMITED, FILEGROWTH 10240KB )…

【管理】「本能叛逆」与「理性叛逆」

叛逆是一般人认知的负面名词&#xff0c;但是&#xff0c;很多人都忽略掉&#xff0c;它却是人类进步的重要因子。观察孩童的成长过程&#xff0c;十岁以后都会出现叛逆行为&#xff0c;相当令父母及师长头痛。然而&#xff0c;叛逆却是促使孩童突破家庭单一环境养成的认知与观…