当前位置: 首页 > news >正文

如何做企业网站推广可以自己制作图片的软件

如何做企业网站推广,可以自己制作图片的软件,网站开发是怎么回事,wordpress压缩图片质量零.学习介绍和使用工具 【1】我们使用的教材是机械工业出版社的《32位汇编语言程序设计第二版》。 指导老师是福州大学的倪一涛老师。 这门课程教授的是Intel 80*86系列处理器的32位汇编。我们现在的处理器都兼容这个处理器。 这篇博客只是大二下汇编语言学习的总结#xff…零.学习介绍和使用工具 【1】我们使用的教材是机械工业出版社的《32位汇编语言程序设计第二版》。 指导老师是福州大学的倪一涛老师。 这门课程教授的是Intel 80*86系列处理器的32位汇编。我们现在的处理器都兼容这个处理器。 这篇博客只是大二下汇编语言学习的总结用于基础入门。 【2】环境和工具 电脑系统:Windows11 VC6和Devc:用于看c语言对应的汇编便于研究也可以直接使用里面的g 汇编器masm6.15--编译汇编将汇编程序执行 调试器ollydbg 工具的使用这里省略。 【3】汇编指令的执行过程 一.从机器语言到汇编语言 程序设计语言是人与计算机沟通的语言程序员利用它进行软件开发。通常人们习惯使用类似自然语言的高级程序设计语言如C,C,Basic,Java等。 高级语言需要翻译为计算机能够识别的指令(机器语言)才能被计算机执行。机器语言是一串0和1组成的二进制代码如果直接用它来编写程序太过于晦涩难懂且开发效率极低称为低级语言。 于是我们将二进制底阿妈的指令和数据用便于记忆的符号助记符Mnemonic表示就形成汇编语言Assembly,所以汇编语言是一种面向机器的低级程序设计语言也称为低层语言。 二.寄存器与存储 【1】存储有分为外存储器和内存储器。外存储器就是磁盘。而内存储器就是寄存器内存分为主存和缓存。这里重点介绍一下寄存器。 【2】寄存器分类 【3】通用寄存器重点 32为兼容16位和8位。所以我们寄存器写EAX或AX都可以。EAX和AX可以分为AH和AL也就是高低两个寄存器。其他也是这样。 地址指针寄存器尽量不要用很容易导致程序出错。 数据寄存器的习惯用法 【4】段寄存器和专用寄存器一般在系统内核用到我们用不到了解即可 三.汇编指令 0.概述 汇编语言由以下3类组成 1.汇编指令机器码的助记符 2.伪指令由编译器执行 3.其它符号由编译器识别 汇编语言的核心是汇编指令它决定了汇编语言的特性。 具体语法 1.注释 汇编语言分号后面是注释。 2.基本框架 例 include irvine32.inc ; 包含 Irvine32 库提供 32 位输入输出功能 .data ; 定义数据段这里定义的数据是存储在内存中 ... ; 数据定义这里省略 .code ; 定义代码段 main proc ; 主过程开始... ; 执行过程这里省略exit ; 调用 Irvine32 库中的 exit 函数程序退出 main endp ; 主过程结束 end main ; 程序结束3.数据的定义 在汇编语言中不同的数据类型用来表示不同长度的数据。常见的数据类型如 BYTE一个字节8位 WORD:一个字16位 DWORD:双字32位【也可以是dd】 QWORD四字64位 .data a dword 1 如果数值不确定可以用?代替值 .data a dword ? 4.通用数据处理指令 【1】传送指令mov 传送指令MOV把一个字节字或双字的操作数从源位置传送至目的位置可以实现常数通用寄存器主存内存之间的数据的传送。 例: 但是mov的两个参数不能都是常数或内存。 【2】堆栈操作指令push和pop 【3】与算数相关的指令--add,sub,mul等 基本格式也是add 目的操作数 源操作数。上面指令的两个参数也一样不能都是常数或内存。 【4】某个值1 例inc eax  5.函数初步--函数的使用 【1】汇编中也有函数将一系列操作进行封装。 函数调用指令Call f 【2】比如输入输出整数的函数 1输入输出整数--ReadInt和WriteInt 格式 注这里我们使用函数之前要将输出的目标整数先存入eax中。另外这里我们输入输出使用的函数是Irvine32 库它提供 32 位输入输出功能。 2输出字符--WriteString输出edx中存储内存地址指向的变量 案例打印hello world include irvine32.inc ; 包含 Irvine32 库.datahello_msg byte Hello World!, 0 ; 存储要显示的字符串 .code main procmov edx,offset hello_msg ; 将要显示的字符串地址存储在 edx 中call WriteString ; 调用 Irvine32 函数 WriteString 输出字符串exit ; 退出程序 main endpend main注.data 部分用于声明和初始化数据段存储在内存中的变量。 在这里hello_msg db Hello World!, 0 这行代码的含义是 1hello_msg变量名称。 2bytebyte是一个伪指令表示内存开辟一个字节的空间存储变量。 3Hello World!这是要存储的字符串数据即 Hello World!。 40这里的 , 0 表示以 0 结尾用于表示字符串的结束。在汇编语言中定义字符串要在后面自己加上0当作终止符。 5offset:offset是来获取内存地址的。因为writeString需要的是变量地址而不是变量所以这里字符串不能直接mov edx, hello_msg。而应该使用offset关键字来获取变量的地址放入edx中这里存的是地址而不是值。 当然mov edx, hello_msg也不会成功因为字符串“hello world”是byte类型只有8位所以mov要用movzx。【还有一个movsx是带符号位的】 这行代码的作用是定义了一个以 Hello World! 结尾的字符串并将其存储在内存中然后将其地址放在edx中然后调用WriteString函数去内存中找到地址对应的字符串将其输出。 3输出换行 call Crlf       ;输出换行 6.定义数组 【1】定义数组 .data a dd 1,2,3,4,5,6,7 如果要数组一次性赋值 .data a dd 10 dup(0)【2】访问数组 访问第一个元素 include irvine32.inc .dataa dword 1, 2, 3, 4, 5, 6, 7 .code start:mov eax, acall writeintexit end start注writeint的本质是读取eax的四个字节然后将这四个字节的数据转化为int值。 mov eax, a是将第一个元素的值放入eax中。 数组第i个元素访问 include irvine32.inc .dataa dword 1, 2, 3, 4, 5, 6, 7 .code start:mov eax, ai*4call writeintexit end start还有一种ai*4更加好看更接近c的写法就是a[i*4]一般我们都这样写。 注[]这个加不加知识规范的问题ai*4和[ai*4]实际上和a[i*4]是一致的。 include irvine32.inc .dataa dword 1, 2, 3, 4, 5, 6, 7 .code start:mov eax, a[i*4]call writeintexit end start7.分支和循环结构的汇编实现 【0】基础--比较和跳转指令 一般使用比较和跳转实现分支结构 比较指令 cmp x,y 跳转指令 jmp, jXXXja, jb, jz cmp x, y执行操作 x-y (x与y的值不变),根据操作结果改变EFLAG相应的位。 jmp是无条件跳转而jXXX是有条件跳转。 比如 ja loc: 若x与y是无符号数(程序员定义)且 xy,则程序跳转到地址loc处执行。 jz/je loc: 若x与y是无符号数(程序员定义)且 xy,则程序跳转到地址loc处执行 jb loc: 若x与y是无符号数(程序员定义)且xy则程序跳转到地址loc处执行 jg loc: 若x与y是有符号数(程序员定义)且 xy,则程序跳转到地址loc处执行 jz/je loc: 若x与y是符号数(程序员定义)且 xy,则程序跳转到地址loc处执行 jl loc: 若x与y是无符号数(程序员定义)且 xy则程序跳转到地址loc处执行 jge loc 有符号数xy jle loc 有符号树xy 【1】分支结构汇编实现--实际是比较和跳转 分支结构案例求整数 a与b最大值,并在屏幕中输出最大值 算法设计 if a b then maxa else maxb 分支具体思路 c中的写法 if(ab){Block1 }else{Block2 }转化为比较和跳转指令实现if ab goto L1Block2goto final L1: Block1 final:但是上面并没有Block1和Block2的顺序并没有和我们c的正常逻辑一一对应 当我们真正去写的时候会发现有点麻烦一般写的时候会将比较条件反转也就是像下面这样if ab goto L1Block1goto final L1: Block2 final: 代码实现题目 include irvine32.inc ; 包含 Irvine32 库.dataa DWORD 0x10 ;DWORD,双字32位,0x10是16进制的10b DWORD 0x20.code main PROCmov eax, acmp eax, bjna maxb jmp final maxb: mov eax, b final : call writeint exit main ENDP END main 【2】循环结构汇编实现--实际是判断 循环结构案例 在内存中存有10个整数求这10整数 最大值,并在屏幕中输出最大值 算法设计 循环结构具体思路 c语言中 for(i0;in;i){Block; }循环的本质是if判断 if(in){Block;i; }i0 L0: if(in) goto L1goto final L1: Blockijmp L0 final:将比较条件反转更简单书写简化代码 i0; L0: if(in)goto finalBlockijmp L0 final: 代码实现 main procmov eax, arr[0];eax存放最大值mov esi, 0; esi存放数组元素下标 L0: cmp esi, 10jge finalcmp eax, arr[esi*4]jge L1mov eax,arr[esi*4]; L1: add esi, 1;jmp L0 final: call writeint exit main endp 8.函数详解--自定义函数 1.用于模块化、是重要的封装机制 2.函数定义方式与执行逻辑 3.参数传递方法 【1】内存变量(数据段)方式--简单说就是在.data下定义全局变量所有函数都可以用。一般定义全局变量不好。 【2】寄存器方式--简单说就是将数据存放在寄存器中然后函数要用去寄存器取。 【3】栈方式--将数据放在栈中pop和push。 一般的话不用第一种用第二和第三种。考试一般用第二种。 案例插入排序 这里就是采用第二种方式每次调用函数之前先将参数存入寄存器中后面函数执行的时候再去寄存器取。和ReadInt等差不多。 include irvine32.inc .dataarr1 dword 10 dup(?)arr2 dword 20 dup(?) .code main procmov edx,offset arr2mov ecx,20call buildArraymov edx,offset arr2mov ecx,20call outputArray call crlfmov edx,offset arr2mov edi,20call insertSort mov edx,offset arr2mov ecx,20call outputArray exit main endpinsertSort procmov ebx,1 startFor:cmp ebx,edijge endFormov ecx,[edx4*ebx] mov esi,ebxsub esi,1 startWhile: cmp esi,0jl endWhilecmp [edx4*esi],ecxjle endWhile mov eax,[edx4*esi];eaxarr[j] mov [edx4*esi4],eaxsub esi,1jmp startWhile endWhile:mov [edx4*esi4],ecx add ebx,1jmp startFor endFor:ret insertSort endpoutputArray procmov esi,0 startFor:cmp esi,ecxjge endFor mov eax,[edx4*esi]call writedecmov al, call writechar add esi,1jmp startFor endFor:ret outputArray endpbuildArray proc mov esi,0 startFor:cmp esi,ecxjge endFormov eax,1000call randomRangemov [edx4*esi],eax add esi,1jmp startFor endFor:ret buildArray endpend main 注ret是函数返回后面可以接参数。而exit是程序退出。 proc代表函数开始endp代表函数结束。
http://www.zqtcl.cn/news/73834/

相关文章:

  • 国内知名的网站设计公司作网站
  • cms门户网站模板下载东莞横沥镇地图
  • 网站备案名称的影响吗免费移动网站模板下载安装
  • 如何用Python网站开发软文推广网站
  • 厦门网站推广¥做下拉去118cr成都摄影网站建设
  • 网站怎么做直播功能吗自学摄影教程的网站有哪些
  • 中国在数码网站注册域名好 gt济宁嘉祥网站建设
  • 医院网站建设选哪家wordpress使用七牛
  • 网站开发完成后如何发布外贸网站建站案例
  • 长沙企业如何建网站专业科技网站建设
  • 俄语企业网站制作医院网站建设思路
  • 关于旅游网站策划书做网站可以赚多少钱
  • 海口省建设厅网站网站欢迎界面设计
  • 成都j网站制作上海全部解封通知最新
  • 自己做网站做淘宝联盟中医诊所引流推广方法
  • 网站备案回访电话号码网页版原神
  • 上海c网站建设wordpress目录怎么制作
  • 教育网站建设的策划设计师去哪个网站找工作
  • 网易企业邮箱是什么昆明关键词优化软件
  • 企业网站可以免费做吗电商网页设计实训报告
  • 佛山优秀网站建设做网站搭建的公司
  • 营口网站建设wordpress花生壳lamp
  • 服装网站建设方案怎样淘宝seo排名优化
  • 如何用免费个人网站制作中国万网官网登录
  • 深圳罗湖做网站工作细胞樱花动漫
  • 成都网站平面设计北京企业网站seo平台
  • 如何让域名到网站宁波妇科医院私立哪家医院好
  • 保定网站建网址浏览器
  • 网站开发是前端吗网站顶部布局
  • 网站备案 域名备案视差网站