匯編語言-002(.data、Equal、$、EQU 、MOV 、MOVSX、MOVZX)

1:變量相加程序

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
firstval DWORD 20002000h
secondval DWORD 11111111h
thirdval DWORD  22222222h
sum DWORD 0.code
main PROCmov eax,firstvaladd eax,secondvaladd eax,thirdvalmov sum,eaxINVOKE ExitProcess,0
main ENDP
END main

2:.data? 偽指令聲明未初始化程序,當定義大量未初始化數據時,.data?偽指令減少了程序的大小

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data 
smallArray DWORD 10 DUP(10)
.data?
bigArray DWORD 5000 DUP(?) ;20000個字節,未初始化.code 
main PROCINVOKE ExitProcess,0
main ENDP
END main

3:不用.data? 程序會比使用大

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data 
smallArray DWORD 10 DUP(10)
bigArray DWORD 5000 DUP(?)  ;不用.data?,生的編譯程序將會多出20000個字節.code 
main PROCINVOKE ExitProcess,0
main ENDP
END main

4:等號偽指令等號偽指令與宏定義差不多在匯編器預處理時替換的,不占內存,運行時數值不能變,$當前地址計數器符號,返回當前程序語句的偏移量

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
selfPtr DWORD $  ;$當前地址計數器符號,返回當前程序語句的偏移量
selfPPtr DWORD selfPtr ;與上面一樣;等號偽指令與宏定義差不多在匯編器預處理時替換的,不占內存,運行時數值不能變COUNT = 10  
array  DWORD COUNT DUP(0)  .code
main PROCINVOKE ExitProcess,0
main ENDP
END main

5:使用$計算數組長度

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitProcess:DWORD.data
list BYTE 10,20,30,40
listSize = ($-list)  ;使用$計算數組長度時$前不能有別的數據myString BYTE "This is a long String"BYTE "any number of character"
Ssize = ($-myString)Wlist WORD 10,20,30,40
WlistSize = ($-Wlist)/2  ;除以WORD的長度.code
main PROCINVOKE ExitProcess,0
main ENDP
END main

6:EQU 偽指令使用,也是類似宏

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
pressKey EQU <"Press any key to continue....",0>
prompt BYTE pressKey   ;pressKey直接把里面的當做文本數據保存到promptmatrix1 EQU 10*10
matrix2 EQU <10*10> M1 WORD matrix1 ;等于M2 WORD 100
M2 WORD matrix2 ;等于M2 WORD 10*10 <>括號內的數據直接復制到M2.code
main PROCINVOKE ExitProcess,0
main ENDP
END main

7:TextEQU文本宏使用,與EQU類似,如果用<>括號都復制替換里面的內容

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
contiuneMsg TEXTEQU <"Do you wish co continue(Y/N)?">
prompt1 BYTE contiuneMsg;文本宏可以相互構建
rowSize = 5
count TEXTEQU %(rowSize * 2)  ;分配整數表達式
move TEXTEQU <mov>            ;分配文本
setupAL TEXTEQU <move al,count>P1 TEXTEQU <"proc">
P2 TEXTEQU <P1,"edure">
S BYTE P2     ;S 等于“procedure.code
main PROCsetupAL  ;等于 mov al,10INVOKE ExitProcess,0
main ENDP
END main

8:mov偽指令使用

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
oneByte BYTE 78h
oneWord WORD 1234h
oneDword DWORD 12345678h.code
main PROCmov eax,0mov al,oneBytemov ax,oneWordmov eax,oneDwordmov ax,0INVOKE ExitProcess,0
main ENDP
END main

9:使用mov處理較小有符號數向較大寄存器賦值

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
signedVal SWORD -16.code
main PROCmov ecx,0FFFFFFFFhmov cx,signedValINVOKE ExitProcess,0
main ENDP
END main

10:MOVSX偽指令,符號位擴展賦值

.386
.model flat,stdcall.stack
ExitProcess PROTO,dwExitCode:DWORD.data
byteVal BYTE 10001111b
.code
main PROCmovsx ax,byteValmov bx,0A69Bhmovsx eax,bxmovsx edx,blmovsx cx,blINVOKE ExitProcess,0
main ENDP
END main

11:MOVZX偽指令,零擴展賦值

.386
.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
byteVal BYTE 10001111b
.code
main PROCmovzx ax,byteValmov bx,0A69Bhmovzx eax,bxmovzx edx,blmovzx cx,blINVOKE ExitProcess,0
main ENDP
END main

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

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

相關文章

\r與\n的區別,\r\n與\n或\r的區別(C語言/C#)

本文出處http://topic.csdn.net/t/20020718/07/882679.html 原作者:triout&#xff08;笨牛&#xff09; \r表示回車&#xff0c;\n表示換行&#xff0c;我們按回車按鈕的時候&#xff0c;系統自動產生回車和換行兩個字符&#xff1a; 回車僅僅是表示完成&#xff0c;把光…

通過ID查詢一個用戶的兩種開發方法

通過ID查詢一個用戶的兩種開發方法 數據庫建表sql語句如下&#xff1a;https://github.com/beyondyanyu/Sayingyy/blob/master/JDBC2-數據庫sql建表語句 ①&#xff0c;原始Dao開發&#xff1a; UserDao.java&#xff08;接口&#xff09;: package com.pdsu.mybatis.dao;i…

duration java_Java Duration類| minusMinutes()方法與示例

duration java持續時間類minusMinutes()方法 (Duration Class minusMinutes() method) minusMinutes() method is available in java.time package. minusMinutes()方法在java.time包中可用。 minusMinutes() method is used to subtract the given duration in minutes from t…

Silverlight + WCF異步調用 例子

看大家好像對我的NParsing框架不是很感興趣&#xff08;寫NParsing帖沒人頂我&#xff09;&#xff0c;那就給大家來點“甜品”&#xff0c;換換口謂。來說說Silverlight方面的東西。 在Silverlight中數據通信只能用異步。有人會覺得寫起來很麻煩&#xff0c;其實不然。也有很簡…

我博客主頁的搜索功能怎么不好用

用博客里面的搜索功能&#xff0c;“找找看”&#xff0c;搜索我博客里面的關鍵字&#xff0c;但是不能出現結果。但是我在別人的主頁上能夠搜索該人的內容&#xff0c;能夠查詢到記錄&#xff0c;難道博客園對每個博客的信息要先排序&#xff1f;目前我的還不在他的搜索數據庫…

小議SqlMapConfig.xml配置文件

①、mybatis-3-config.dtd 主要用于mybatis的核心配文件sqlMapConfig.xml的約束 sqlMapConfig.xml代碼如下&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN&q…

ffmepg 命令提取音視頻數據

原文件&#xff1a; 1&#xff1a; 原音頻數據提取&#xff08;保留還是mp4的封裝格式的&#xff09;&#xff1a; ffmpeg -i test_1920x1080.mp4 -acodec copy -vn audio.mp4 -vn 就是沒有視頻&#xff0c; -acodec copy 音頻拷貝不進行任何轉碼 原視頻數據提取&#xff0…

Java BigInteger類| modInverse()方法與示例

BigInteger類modInverse()方法 (BigInteger Class modInverse() method) modInverse() method is available in java.math package. modInverse()方法在java.math包中可用。 modInverse() method is used to calculate the mod inverse by using the inverse of (this BigInteg…

【7】jQuery學習——入門jQuery選擇器之過濾選擇器-可見性過濾選擇器

這篇什么都不說&#xff0c;看標題就知道了&#xff0c;很簡單&#xff0c;就2個選擇器&#xff0c;嘿嘿 選擇器描述返回$("Element:hidden")選取所有不可見的元素集合元素$("Element:visible")選取所有可見元素集合元素這篇很簡單吧&#xff0c;就2個&…

Creating an undraggable TitleWindow container in Flex (轉載)

The following examples show how you can create an undraggable TitleWindow container by setting the isPopUp property to false on the TitleWindow instance. <?xml version"1.0" encoding"utf-8"?><!-- http://blog.flexexamples.com/2…

匯編語言-003(LAHF_SAHF 、XCHG、FLAGS、 OFFSET、ALIGN、PTR、LENGTHOF、SIZEOF)

1&#xff1a;LAHF將EFLAGS符號寄存器低8位字節復制到AH&#xff0c;SAHF將AH復制到EFLAGS符號寄存器低8位字節 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data saveflags BYTE ?.code main PROClahfmov saveflags ,ahmov ah,saveflagssahfIN…

Mybatis中的核心配置文件SqlMapConfig.xml詳細介紹

一、properties&#xff08;屬性&#xff09; 可以引用java屬性文件中的配置信息如下 jdbc.properties代碼如下&#xff1a; jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/mybatis?characterEncodingutf-8 jdbc.usernameroot jdbc.passwordbeyond…

用Kotlin開發您的第一個應用程序| Android與Kotlin

In the previous article, we learned how to setup Kotlin in the android studio? Now moving to journey ahead we are going to develop our first app with Kotlin. It is the basic app, but it will let you know the structure of the program. 在上一篇文章中&#x…

數據結構與算法分析-第一章Java類(02)

編寫一個名為Person的類&#xff0c;它包含分別表示人的名字與年齡的兩個數據域。要求此類包含對其中任何一個數據域進行設置與獲取的方法。還要求包含可進行下列測試的方法&#xff1a; 兩個Person對象是否相等--即是否有相同的名稱與年齡一個人是否比另一個人年長 最后&#…

asp.net對于長篇文章進行分頁

對于文章篇幅比較長的&#xff0c;就必須采用分頁顯示。在.net中對長篇文章分頁一般有2種方法&#xff0c;第一種就是先計算好一頁的文字長度是多少&#xff0c;然后把文章總的長度除設置好的單頁文字長度及可&#xff0c;用這方法可以減少認為進行分頁的繁瑣&#xff0c;但是這…

匯編語言-004(LABEL 、間接尋址、變址操作數、指針使用、TypeDef、LOOP、DWORD變量交換高位低位字)

1&#xff1a; LABEL : 為一個標號定義大小屬性&#xff0c;但不分配內存與下一個變量共用內存&#xff0c;與C中UNION類似 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCoed:DWORD.data val16 LABEL WORD val32 DWORD 12345678hLongValue LABEL DWORD val1…

(只需挨個復制粘貼命令即可部署)在Centos7下搭建文件服務器(VSFTPD)

觀看北京尚學堂-百戰程序員筆記一、VSFTPD簡介 Linux的組件&#xff08;一款軟件&#xff09;&#xff0c;安裝到Linux后可以通過java代碼&#xff08;FtpClient&#xff09;實現文件的上傳。基于FTP協議。 由于VSFTPD是基于FTP協議&#xff0c;客戶端瀏覽器是需要通過http協議…

POJ 2421 Constructing Roads MST kruskal

最近剛學的并查集所以用kruskal來試試最小生成樹~ kruskal其實用幾句話就能說完~ 1.貪心所有邊的權值,從小到大取值 2.取值時~將邊權非0的兩個頂點~進行并查操作~如果兩個點的祖先不同...邊權加入最小生成樹...并且將兩個點納入同一個集合中 3.判斷是否所有點都在同一個集合中…

c# 聲明類的時候初始化類_使用C#初始化的列表聲明

c# 聲明類的時候初始化類The task is to create/declare a list with an initializer list in C#. 任務是在C&#xff03;中使用初始化列表創建/聲明一個列表 。 C&#xff03;清單 (C# List) A list is used to represent the list of the objects, it is represented as Lis…

編寫程序計算所輸日期是當年的第幾天

/* 1.輸入年月日&#xff0c;編寫程序計算所輸日期是當年的第幾天 *//* 2.已知列車隔日發車&#xff0c;且1/1/2006不發車(無ticket),如果所輸入數據在此日期之后&#xff0c;則輸出有沒有車票&#xff0c;否則僅輸出上一步結果。*/ /* month/date/year is which day of the ye…