汇编语言程序的上机过程及调试(汇编语言源程序编写和堆栈平衡)
汇编语言程序的上机过程及调试(汇编语言源程序编写和堆栈平衡)
2024-10-01 06:37:11  作者:藏一人  网址:https://m.xinb2b.cn/know/cpx528561.html
汇编语言 第一个程序


源程序从写出到执行的过程第一步:编写汇编源程序产生一个存储源程序的文本文件第二步:对源程序进行编译链接编译 产生目标文件链接 产生可执行文件第三步:执行可执行文件操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载到内存,并进行相关初始化,比如,设置CS:IP指向第一条要执行的命令,然后由CPU执行相关操作。伪指令汇编语言源程序中,包括两种指令,一种是伪指令,一种是汇编指令。汇编指令是有对应机器码的指令,可以被编译为机器码的指令,最终由CPU所执行。伪指令没有对应的机器码指令,CPU不会执行,编译器根据伪指令进行相关编译工作。定义一个段 XXXX segment XXXX ends程序返回一个程序P2在可执行文件中,必须有一个正在运行的程序P1,将P2从可执行文件加载入内存后,将CPU的控制权交给P2,P2运行后,P1暂停运行。当P2运行完毕后,将P2的控制权交还给P1,P1继续运行。mov ax,4c00H int 21H执行1.exe时,command将1.exe中的程序加载如内存。command设置CPU的CS:IP指向程序的第一条指令(即程序的入口),运行程序。程序运行结束之后,返回command,CPU继续运行command。编译和链接


段前缀PSP


PSP:DOS要利用PSP段前缀和被加载的程序进行通信。

bx偏移地址mov ax,[bx]mov al,[bx]loop循环指令(cx)=(cx)-1判断(cx),不为零则转至标号处执行,如果是零则向下执行段前缀

用于显式的指明内存单元的段地址。

mov ax,ds:[bx]mov ax,cs:[bx]mov ax,ss:[bx]mov ax,es:[bx]debug和masm对指令的不同处理debug将 mov ax,[0] 中的 [0] 解释成内存单元,而masm汇编源程序将其解释成 0解决方案:使用bx或者显示给出段寄存器一段安全的空间

在8086模式中,随意向一段内存空间写入内容是很危险的,因为这段空间可能存放着重要的系统数据或代码。

assume cs:codecode segmentstart:mov ax,0 mov ds,ax mov ds:[26h],ax mov ax,4c00h int 21hcode endsend start


练习

计算 ffff:0006 单元中的数乘以123,结果存储在dx中。

汇编源程序中,数字不能以字母开头跳出循环g IP

assume cs:codecode segment mov ax,0ffffH mov ds,ax mov bx,6 mov al,[bx] mov ah,0 mov dx,0 mov cx,123 s:add dx,ax loop s mov ax,4c00H int 21Hcode endsend

数据放在什么位置?之前的程序中只有一个代码段,那么数据应该存放在什么位置?为了保证数据安全,0:200 ~ 0:2FF是相对安全的,但是这段空间容量只有256个字节,如果超出这个限制,数据应当如何存放?数据段


assume cs:codecode segment ; define word dw 0123H, 0456H, 0789H, 0abcH, 0defH, 0fedH, 0cbaH, 0987Hstart:mov bx,0 mov ax,0 mov cx,8 s:add ax,cs:[bx] add bx,2 loop s mov ax,4c00H int 21Hcode endsend start

call指令

当CPU执行 call 标号时,相当于进行:

push IPjmp near ptr 标号

当CPU执行 call far ptr 标号时,相当于进行:

push CSpush IPjmp far ptr 标号ret和retf指令ret:pop IPretf: pop IP pop CS堆栈平衡EBP栈底指针ESP栈顶指针进入call前与执行call后EBP和ESP的值不变push ebp:相当于 sub,esp,4 和 mov [esp],ebppop ebp:相当于 mov ebp,[esp] 和 add esp, 4补充指令

XCHG

交换指令只可以在寄存器之间、寄存器与存储器之间进行两个操作数长度必须相等例如:XCHG AX,BX

NOT

取反指令,
  • 美利奴羊毛和海岛棉(神奇的美利奴羊毛)
  • 2024-10-01神奇的美利奴羊毛刚刚结束的五一假期,很多热爱户外的朋友不约而同地在朋友圈晒出了心声:如果不是因为疫情,我现在应该在外面浪,并晒出了3年前的五一和今年的五一假期对比图这三年,被疫情封印的绝大部分跑者、徒步爱好者,都被隐。
  • 五查五看对照检查材料(例文参考)
  • 2024-10-01例文参考查党性修养,看自己能否坚守共产党人信仰信念宗旨中国共产党员是中国工人阶级的有共产主义觉悟的先锋战士,也永远是劳动人民的普通一员,必须全心全意为人民服务自从我入党至今,始终在基层工作,平时工作中,只注重。
  • 八旬老人走失消防队(放下烧土鸡就跑)
  • 2024-10-01放下烧土鸡就跑“今天是团圆的节日,每逢佳节倍思亲,你们想家了吧?……今天阿姨代替你们的妈妈,烧两个家常菜给你们吃,虽然没有家的温暖,但是让你们吃到家的味道……”这是一封字迹工整的信,间杂着一两个错别字,一些写错的地。
  • 驾照色盲测试图两个答案(几张图测试你是否为色盲)
  • 2024-10-01几张图测试你是否为色盲几张图测试你是否为色盲?第二张图看到的是鹿,建议别考驾照了大家若是准备考驾照,那么一定要有一个常识,就是在准备考试前,总是要检测考生的色盲这项还是必考的,这是因为若考生事色盲或是色弱的话,就会直接被剥。
  • 骁龙八核排行(8核专为跑分设计)
  • 2024-10-018核专为跑分设计PC处理器十年前进入双核心时代,至今桌面上主流还是四核心,六核、八核并不多,而手机处理器在无限军备竞赛的刺激下,短短几年就已经迎来了十核(联发科MT6797)!与此同时,争论也始终不断:Android。
  • 大头绿衣斗僵尸超清(大头绿衣斗僵尸小时候又菜又爱看)
  • 2024-10-01大头绿衣斗僵尸小时候又菜又爱看让他把你的棺木挖出来,放在一块至阴至寒的地方,一般至阴至寒地方泥土是黑色,不仅寸草不生,在军中最适合暴走尸土,所以也出了养尸地棺木出来之后,要将它法藏,所谓法藏,就是把棺材立起来放,还要记住棺材一定要。
  • 全新林肯z上市(明明是二线豪华品牌的B级车)
  • 2024-10-01明明是二线豪华品牌的B级车雷克萨斯一直不敢国产,它怕国产后和BBA在“正面厮杀”中讨不到好处,倒不如保持进口车的身份来得划算,还说什么“怕国产后达不到雷克萨斯的品质要求”,难道你在印度建厂就不怕达不到“雷克萨斯的品质要求”了吗。
  • 欠费也上征信(用征信治欠费得悠着点)
  • 2024-10-01用征信治欠费得悠着点今年11月开始,江西省电信用户如果手机超过3个月未交清欠费,有可能被接入个人征信系统此举引发争议日前,江西电信工作人员对媒体证实上述规定,并称该举措目前暂定先对恶意欠费用户进行试点,且会事先告知企业维。
  • 从来没看过的极品吃货(吃货养成记二零一四)
  • 2024-10-01吃货养成记二零一四吃货多指喜欢吃各种美食的人,并对美食有一种独特的向往、追求,有品位的美食爱好者、美食客、美食家对美食产生的一种迷恋,看到美食就充满了力量我喜欢记录美食,名曰:先消毒(拍照)为了让吃货养成记,能有一个完。
  • 镇海寺郊野公园在哪(镇海寺郊野公园在哪详解)
  • 2024-10-01镇海寺郊野公园在哪详解镇海寺郊野公园位于北京市朝阳区南四环十八里店南桥向南约1.5公里处,西邻镇海公园,东邻京津塘高速路,北依南四环路,南邻红纺路,交通十分便利东南侧是2008年新建的郊野公园环项目-鸿博公园公园力求再现郊。