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

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

  1. 汇编语言-007(ADD_SUB_NEG 、 PUSH和POP指令应用 、 AND,OR,XOR使用 、 条件跳转应用)

    1: ADD_SUB_NEG : ADD伪指令增加数值,SUB伪指令减少数值,NEG取反+1 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO ...

  2. 【汇编语言与计算机系统结构笔记07】条件码,比较、测试、条件跳转与条件转移指令,结合微体系结构与流水的说明

    本次笔记内容: 08.控制流-1 文章目录 条件码 基于add的CF, ZF, SF, OF 比较(Compare)指令 测试(Test)指令 读取条件码(SetX)指令 例子 拓展:流水设计与微体系 ...

  3. 汇编语言条件跳转指令汇总

    汇编语言条件跳转指令 基于特定标志位值的跳转 助记符 说明 标志位 JZ 为零跳转 ZF=1 JNZ 非零跳转 ZF=0 JC 进位跳转 CF=1 JNC 无进位跳转 CF=0 JO 溢出跳转 OF= ...

  4. 汇编 and or xor not test cmp 条件跳转指令 jcc

    布尔和比较指令 and and destination, source and reg, reg/mem/imm and mem, reg/imm mov al, 10101110b and al, ...

  5. 汇编--条件跳转指令

    条件跳转指令很多,支持根据有符号.无符号整数的比较以及对CPU状态标志的检查进行跳转的一系列指令. 根据特定的标志的 根据两操作数是否相等,或根据(E)CX的值是否相等 基于无符号操作数的比较结果的 ...

  6. Win32ASM学习[17]:条件跳转

    ---------------------------------------------------------------------------------------------------- ...

  7. 16.控制转移指令(条件跳转指令、比较条件跳转指令、多条件分支跳转指令、无条件跳转指令)

    目录 1.控制转移指令 1.1 条件跳转指令 1.2 比较条件跳转指令 1.3 多条件分支跳转指令 1.4 无条件跳转指令 1.控制转移指令 控制转移指令分为如下图所示的5种,其中比较指令在算术指令中 ...

  8. 014-无条件跳转指令jmp+

    l  无条件跳转指令jmp l   goto指令 l   优化后的指令     l  标志寄存器PSW 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF T ...

  9. c语言 跨子程序跳转,PLC的条件跳转,子程序调用等指令使用方法

    原标题:PLC的条件跳转,子程序调用等指令使用方法 点 条件跳转指令: 指令名称,助记符,指令代码,程序步如下表: 程序步可以是连续执行或者是脉冲执行,CJ执行的为3步,CJ(P)为1步. 指令格式: ...

最新文章

  1. Magento(麦进斗)安装问题
  2. php的autoload机制
  3. UIWebView加载Loading...两种方法
  4. jquery中is()函数
  5. python语句分为什么_Python为什么使用缩进来分组语句?
  6. 小米第二款5G手机是小米9?升级版小米9 配置强悍!
  7. 荣耀linux装win读不出u盘,华为/荣耀路由器USB接入硬盘/U盘后无法识别怎么解决?...
  8. 为什么中国没有类似于windows的操作系统?
  9. 报表或BI的价值在哪?
  10. 闪耀在UNIX传奇往事中的启示,UNIX见证者带你一览究竟
  11. 【联合仿真】Adams六关节机械臂与Matlab/Simulink的联合仿真(上)
  12. 从10秒到2秒!ElasticSearch性能调优实践
  13. css的checkbox样式,css自定义checkbox样式的方法总结
  14. 计算机视觉算法面试准备
  15. mr.baidu.com百度官方缩短网址接口网站调用生成制作方法解析
  16. 乘云远航|共赢新征程,打造数字化供应链竞争力!
  17. 今天去西安易朴通讯有限公司实习
  18. 库卡机器人会卡顿吗_看完你就知道德国库卡机器人到底有多牛!
  19. 阿里云服务器如何进行快照备份
  20. JS简单实现京东网页轮播图

热门文章

  1. 西工大java高级网络编程_奥鹏西工大16春《JAVA高级网络编程》平时作业
  2. js dom node.children与node.childNodes区别
  3. 编写高质量的代码,改善c#程序的157个建议_之1~10
  4. 洛谷P2822 组合数问题
  5. C# 如何跨平台调用C++的函数指针!
  6. js判断对象数组中是否存在某个对象
  7. json和字符串/数组/集合的互相转换の神操作总结
  8. -bash: belts.awk: command not found
  9. DM9000调试记录
  10. 【Wordpress】分享500多款国外WordPress经典主题 其之三