汇编语言-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.mzph.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…