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

做网站时无法上传图片/宁波怎么优化seo关键词

做网站时无法上传图片,宁波怎么优化seo关键词,网页版微信地址,河北承德建设工程信息网站《汇编语言》第六章主要讲述“如何编写包含多个段的汇编源程序”。本章的文字内容不多,主要通过编程实践来理解汇编源程序架构的含义,通篇学下来,我觉得有以下几点需要理解清楚: 1,这里所说的多个段(segmen…

    《汇编语言》第六章主要讲述“如何编写包含多个段的汇编源程序”。本章的文字内容不多,主要通过编程实践来理解汇编源程序架构的含义,通篇学下来,我觉得有以下几点需要理解清楚:


1,这里所说的多个段(segment),从汇编“程序”的角度来说,它指的是程序所占用的内存空间的划分,大致分为:data segment、stack segment和code segment。其实际就是指定运行时CPU的DS、SS和CS这三个寄存器的值。

2,但是,从源程序的角度来看,它指的是代码的组织方式。源程序分成多个段,是的代码的层次更清晰。

3,我们通常讲的多个段,更多的还是从源程序的角度来说的。事实上,一个段的源程序,通过设置CPU的寄存器也可以划分程序的内存空间。


4,汇编语言通过在源程序中使用段名(name)来标记各个段。

5,源程序中的段名(name)和标号(label),它们本质上都代表一个地址。在debug下反汇编,我们可以看到,段名和标号都被它们代码的地址值替代了。

6,不同的是,段名代表的是段地址(SA),标号代表的是偏移地址(EA)。


7,源程序通过“end+label”指定入口地址(entry),当然,这个入口地址仅仅是偏移地址。默认为0。

8,这个入口地址的信息被记录在.exe的描述信息中,对应“PSP(程序段前缀)”。

9,程序加载的时候,CS由系统指定(或者说由加载程序指定,shell);加载程序会搜索PSP,根据其中的entry,设置IP的值,默认为0。

10,严格来说,单段的程序只需要根据entry修改IP的值,多段的程序,则需要修改CS的值,CS的值按16位对齐,IP的值为0。

11,IP的值为16位,范围为0-255,它能开辟的空间有限,故单段的程序不适合需要大内存的应用。而CS表示段地址,它的变化范围就比较广了,可以开大得多的内存空间。



    本章的重点在于编程实践,下面我将介绍我的编程实践。

检测点6.1

程序补全

(1)内存复制

assume cs:codesg
codesg segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:mov ax,0mov ds,axmov bx,0mov cx,8s:mov ax,[bx]<span style="color:#ff0000;">mov cs:[bx],ax</span>add bx,2loop smov ax,4c00hint 21h
codesg ends
end start

(2)使用栈进行内存复制

assume cs:codesg
codesg segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw 0,0,0,0,0,0,0,0,0,0start:mov ax,csmov ss,axmov sp,36mov ax,0mov ds,axmov bx,0mov cx,8s:push [bx]pop cs:[bx]add bx,2loop smov ax,4c00hint 21h
codesg ends
end start

    以上两个程序都是单段程序,这个不是主流,我就不详细讲解了。


实验5

1,程序调试

问题回答:

1)CPU执行程序,程序返回前,data段中的数据不变;

2)CS=

3)设程序加载后,code段的段地址为X,则data段的段地址为X-16 ,stack段的段地址为X-32



    如上图,重点观察程序执行前后,ds、ss、cs和ip这几个寄存器的值。分析如下:

1)程序加载后,执行前,ds=0cd7h,ss=0ce7h,cs=0ce9h,ip=0000h

    根据第4章的知识可知,ds:0指向程序内存空间起始地址,或PSP首地址,而PSP为256Byte,故SS初始化时为0ce7h,即ss:0 - ds:0 = 256。本来cs的值也应该是0ce7h,但是该程序的源码中用“end+start”改变了入口地址。如果是在单段的程序,仅修改IP的值,但是这是一个多段的程序,直接修改了cs的值。

    cs:0 - ss:0 = 20h。这个20h刚好是data segment和stack segment所占的空间大小。

    需要注意的是:cs的值会保持16位对齐。也就是说,我们在源码中,删除几个(小于16)data segment或stack segment中的元素,重新编译、链接和加载后,在debug下查看,cs的值还是0ce9。至于那段空间,会自动补0,进行填充。

2)程序执行后,ds=0ce7,ss=0ce8,cs=0ce9

    ds和ss的值的变化实际上是程序执行的结果,即是程序员自己编写指令修改它们的。


2,程序调试

    这道程序调试题,与上一道相似,它的重点在问题4。实际上,它要表达的意思是:data segment、stack segment和code segment的段地址会按16位对齐。

    如果一个段中的数据占N个字节,则程序加载后,该段实际占有的空间为“ceil(N/16) * 16”。


3,程序调试

assume cs:code,ds:data,ss:stackcode segmentstart:mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21h
code endsdata segmentdw 0123h,0456h
data ends
stack segmentdw 0,0
stack endsend start

    这个程序是在上一道程序的基础上,调换源程序中各个段的顺序。debug如下:



如上图,重点观察程序执行前后,ds、ss、cs这几个寄存器的值。分析如下:

1)程序加载后,执行前,ds=0cd2h,ss=0ce6h,cs=0ce2h

    根据第4章的知识可知,ds:0指向程序内存空间起始地址,或PSP首地址,而PSP为256Byte,故CS初始化时为0ce7h,即cs:0 - ds:0 = 256。

    这个程序编译后,cs段提到了第一位。

2)程序执行后,ds=0ce5,ss=0ce6,cs=0ce2

    ds和ss的值的变化实际上是程序执行的结果,即是程序员自己编写指令修改它们的。

这道题的目的是要说明,在编译器看来,段名仅仅只是一种标记,谁排在前谁排在后,由源码的位置决定(编译先后不同)。

3)该程序,即使将“end start”改变为“end”,也不影响编译结果


5,编程题(求和)

assume cs:code
a segmentdb 1,2,3,4,5,6,7,8
a ends
b segmentdb 1,2,3,4,5,6,7,8
b ends
c segmentdb 0,0,0,0,0,0,0,0
c endscode segmentstart:mov bx,0mov cx,8s:mov ax,amov ds,axmov dx,[bx]mov ax,bmov ds,axadd dx,[bx]mov ax,cmov ds,axmov [bx],dxinc bxloop smov ax,4c00hint 21h
code ends
end start

6,编程题(逆序复制)

assume cs:codea segmentdw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a endsb segmentdw 0,0,0,0,0,0,0,0
b endscode segmentstart:mov ax,amov ds,axmov ax,bmov ss,axmov sp,10hmov bx,0mov cx,8s:mov ax,[bx]push axadd bx,2loop smov ax,4c00hint 21h
code ends
end start



http://www.lbrq.cn/news/1577989.html

相关文章:

  • gta5网站正在建设中/bing搜索引擎国内版
  • 做打鱼网站犯法不/专门做网站的公司
  • 厦门网站开发网站建设网站/网络平台宣传方式有哪些
  • 新开传奇网站合击/甲马营seo网站优化的
  • 装修上什么网站比较好/推广引流网站
  • 佛山做企业网站公司/如何注册网站
  • web怎样插入自己做的网站/搭建网站工具
  • 一站式做网站服务/广西南宁做网站的公司
  • 嘉兴做网站美工的工作/百度手游排行榜
  • WordPress知更鸟主题怎样安装/北京搜索引擎优化主管
  • php网站开发薪资/今日国内新闻大事件
  • 杭州网站建设图片/seoer是什么意思
  • 电商网站开发哪里好/常用的网络营销方式
  • 做质粒图谱的网站/如何做市场调研和分析
  • 上海搬家公司电话附近/免费seo排名优化
  • 个人网页设计与实现的题目来源/厦门seo计费
  • 公司网站域名cn和com/百度论坛首页
  • 手机app网站建设/成都百度推广公司联系电话
  • 怎么做导航网站/舆情网站直接打开的软件
  • 主播做的头像在哪个网站上做的/品牌网站设计
  • 做相册集什么网站/中国关键词
  • 上海外贸营销网站建设网站/百度信息
  • 用qt做网站可以吗/推广网站有效的方法
  • 电商网站开发设计/什么是竞价推广
  • 河北网站制作公司电话/企业管理软件
  • 购物网站开发背景需求/网络营销的内涵
  • 在工商局网站做年报要交费吗/百度广告上的商家可靠吗
  • wordpress分类自定义文字/济南seo网站排名优化工具
  • mini主机做网站服务器/网络推广外包注意哪些
  • 东莞微信网站建设报价/免费自己制作网站
  • React (react-amap)高德地图使用(加标记、缩放、缩略图)
  • DNS(域名系统)
  • reuse: for booting my spring project with mvn in Windows command line
  • Meta AI水印计划的致命缺陷——IEEE Spectrum深度文献精读
  • (nice!!!)(LeetCode 面试经典 150 题) 146. LRU 缓存 (哈希表+双向链表)
  • 2025华数杯B题一等奖方案:网络切片无线资源管理全解析(附Python/MATLAB代码)