匯編語言-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,dwExitCode:DWORD.data
var1 DWORD 10000h
var2 DWORD 20000h.code
main PROCmov eax,var1add eax,var2mov eax,var2sub eax,var1neg eaxneg var1INVOKE ExitProcess,0
main ENDP
END main

2: ASM26 : 僅用PUSH和POP指令來交換EAX和EBX的值

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.code
main PROCmov eax,10mov ebx,20push eaxpush ebxpop eaxpop ebxINVOKE ExitProcess,0
main ENDP
END main

3: 高級語言的函數通常在堆棧中的返回地址下,立刻聲明局部變量,在匯編語言子程序開端編寫一條指令來保留 兩個雙字變量的空間,對這兩個局部變量賦值1000h和2000h

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.code
main PROCcall proc_1INVOKE ExitProcess,0
main ENDPproc_1 PROCsub esp,8mov esi,espmov eax,2000hmov [esi],eaxadd esi,4mov eax,1000hmov [esi],eaxadd esp,8ret
proc_1 ENDP
END main

4: 用變址尋址方式將雙字數組中的元素復制到同一個數組中其前面的一個位置上

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
arrayD DWORD 1,2,3,4,5.code
main PROCmov ecx,LENGTHOF arrayD - 1mov esi,0mov ebx,arrayD[esi * TYPE arrayD]inc esi
L1:  mov eax,arrayD[esi * TYPE arrayD]dec esimov arrayD[esi * TYPE arrayD],eaxadd esi,2loop L1dec esimov arrayD[esi * TYPE arrayD],ebxINVOKE ExitProcess,0
main ENDP
END main

5: 一組語句顯示子程序的返回地址

.386
.model flat,stdcallinclude Irvine32.inc.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.code
main PROCcall proc_1INVOKE ExitProcess,0
main ENDPproc_1 PROCpop eaxcall  WriteHexpush eaxret
proc_1 ENDP
END main

6: 鏈接數組項,一個鏈接索引數組的起始變址對應一個字符數組,根據變址取出正確順序存入另一個字符數組

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
start DWORD 1
chars BYTE 'H','A','C','E','B','D','F','G'
links DWORD 0,4,5,6,2,3,7,0
outChars BYTE SIZEOF chars DUP(?).code
main PROCmov ecx,LENGTHOF charsmov edi,0mov esi,start
L1:mov al,chars[esi * TYPE chars]mov outChars[edi * TYPE outChars],almov eax,esimov esi,links[eax * TYPE links]inc ediloop L1INVOKE ExitProcess,0
main ENDP
END main

7: 遞歸過程,ECX設定調用次數,不使用其他條件判斷,只使用LOOP

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
count DWORD 0.code
main PROCmov ecx,2call proc_1INVOKE ExitProcess,0
main ENDPproc_1 PROCinc countloop L1retL1:call proc_1ret
proc_1 ENDPEND main

8: AND,OR,XOR使用例子

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.code
main PROCmov ax,0FFFFhand ax,0FFh ;清除AX的高8位,AX的低8位不變mov ax,0or ax,0FF00h ;高AX的8位置1,AX的低8位不變mov eax,0FFFF0000hxor eax,0FFFFFFFFh  ;不使用NOT,使EAX所有位取反mov eax,10and eax,1   ;當EAX的32位值為偶數時,零標志為1,奇數時為0mov eax,11and eax,1INVOKE ExitProcess,0
main ENDP
END main

9: 條件跳轉應用,測試狀態位

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
status BYTE 88.code
main PROCmov al,statustest al,00100000b  ;測試位51就跳轉jnz L0mov al,statustest al,00010011b  ;0141就跳轉jnz L1mov al,statusand al,10001100b  ;屏蔽位237cmp al,10001100b  ;所有位都置1?je L2L0:
L1:
L2:INVOKE ExitProcess,0
main ENDP
END main

10: 條件跳轉應用,兩個數最大數

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
status BYTE 88.code
main PROCmov eax,100mov ebx,99mov edx ,eax  ;假設EAX存放的是最大數cmp eax,ebxjae L1      ;EAX大于等于EBX就跳轉,不再改變EDX的值mov edx,ebx
L1:      ;EDX存放最大值INVOKE ExitProcess,0
main ENDP
END main

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379394.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379394.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379394.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Automatic Reference Counting

Automatic Reference Counting http://clang.llvm.org/docs/AutomaticReferenceCounting.html轉載于:https://www.cnblogs.com/StarMud/articles/2642263.html

實驗5 數據查詢--連接查詢

實驗5 數據查詢--連接查詢一、實驗目的 1.熟悉等值聯接查詢的方法。 2.熟悉非等值聯接查詢的方法。 3.熟悉自身聯接查詢的方法。 4.熟悉外聯接查詢的方法。 5.熟悉復合條件聯接的方法。 二、實驗要求 應用SELECT語句對數據庫eshop中數據進行指定條件的連接查詢。 三、實驗步驟…

Java RandomAccessFile readInt()方法與示例

RandomAccessFile類readInt()方法 (RandomAccessFile Class readInt() method) readInt() method is available in java.io package. readInt()方法在java.io包中可用。 readInt() method is used to read signed 32-bit integer value from this RandomAccessFile. readInt()方…

天高地厚(轉)

信樂團-天高地厚作詞:武雄作曲:詹凌駕 keith stuart你累了沒有可否伸出雙手想擁抱怎能握著拳頭我們還有很多夢沒做還有很多明天要走要讓世界聽見我們的歌準備好沒有時間不再回頭想要飛不必任何理由不管世界盡頭多寂寞你的身邊一定有我我們說過不管天高地厚想飛到那最高最遠最灑…

實驗4 數據查詢--簡單查詢

實驗4 數據查詢--簡單查詢一、實驗目的 1.掌握SELECT語句的基本方法。 2.掌握從表中查詢特定行的方法。 3.掌握從表中查詢前N行的方法。 4.掌握從查詢結果中去掉重復行的方法。 5.掌握使用列的別名的方法。 6.掌握從表中查詢特定列的方法。 7.掌握查詢語句中的通配符的使用。 …

POJ 3189 Steady Cow Assignment

POJ_3189 一開始題意各種理解錯,首先輸入的那個矩陣第i行第j列的值表示的是奶牛i會第j個中意的牛棚,最后求的range就相當于j的range,至于range是變化的范圍,比如j在1、2變化,那么range就應該是2,也就是MAX-…

匯編語言-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,V…

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程序的人不應該是陌生,初期是用來做一些簡單的FORM驗證,基本上是在玩弄一些技巧性的東西。IE 4.0引入了DHTML,同時為了對抗Netscape的Javascript,提出了自己的腳本語言JScript,除了遵循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…