* * 6.1.2 进栈与出栈指令 栈操作指令以它特有的办法存取数据,归于数据传递类指令,但又与MOV等指令有很大的差异。 6.1.2.1 PUSH指令 【指令格局】PUSH ?d 【功用】先把SP的值减去2,然后把操作数d指明的字型数据放入以SS为段地址、SP为偏移地址所对应的内存单元中。 【阐明】 (1)这是单操作数指令,操作数d可所以包含段寄存器在内的任何字型寄存器,或许内存型寻址办法,但不能是当即寻址,当运用内存型寻址办法时可以正常的运用段跨过。 (2)PUSH指令的功用包含移动栈顶和存入数据两部分,两部分接连完结,密不行分。 (3)操作数d进栈是以减2今后的SP的值作为偏移地址,但程序中不允许呈现[SP]的写法。不要与基地址寄存器或变址寄存器用作偏地址时的写法相混杂,也就是说,把PUSH指令了解成下面两条指令的组合是不正确的: SUB SP, 2 MOV [SP], d 因为指令“MOV [SP], d”存在语法过错。 (4)PUSH指令会导致栈顶指针的移动,假如用PUSH指令把许多数据进栈,使SP不断减2,就十分有或许超出栈的有用规模。在一些高档语言中这种现象会导致仓库溢出过错,但8088对此并不做任何检测和正告。因而要求编程人员自己留意操控仓库的巨细,估量或许进栈的数据量,避免因为栈溢出导致一些不行猜测的结果。 6.1.2.2 POP指令 【指令格局】POP ?d 【功用】从SS为段地址、SP为偏移地址对应的内存中取出一个字型数据,送到操作数d指定的方位,然后把SP的值加2。对操作数d的寻址办法要求与PUSH指令相同。 仓库一般用于暂时保存数据。一般做法是先用PUSH指令把需求保存的数据入栈,然后完结必定的指令序列,再用POP指令把原先保存的数据出栈。用仓库保存数据的特点是不用界说变量,不用关怀被保存的数据到底在栈的什么方位,只需保证出栈和进栈的对应联络即可。当CPU中的寄存器不行运用时经常用仓库暂时保存数据。 栈顶所指方位以上的部分是仓库的闲暇区,以下部分是已入栈的数据寄存区(见图6.1),例6.1用来阐明PUSH指令和POP指令对仓库的影响。 【例6.1】设AX=4F8AH,BX=307CH,SP=1000H,别离逐条履行下列指令,用内存图的方式画出仓库的改变状况,并剖析程序段履行完后AX和BX寄存器的值。 PUSH AX PUSH BX POP AX POP BX 【解】仓库改变见图6.2,程序段履行完后AX=307CH,BX=4F8AH。 XX 0FFC XX 0FFD XX 0FFE XX 0FFF YY 1000 SP→ SP→ XX 0FFC XX 0FFD 8A 0FFE 4F 0FFF YY 1000 7C 0FFC 30 0FFD 8A 0FFE 4F 0FFF YY 1000 SP→ (a)履行前 (b)PUSH AX后 (c)PUSH BX后
2、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联络咱们。
3、成为VIP后,您将具有八大权益,权益包含:VIP文档下载权益、阅览免打扰、文档格局转化、高档专利检索、专属身份标志、高档客服、多端互通、版权挂号。
4、VIP文档为合作方或网友上传,每下载1次, 网站将依照每个用户上传文档的质量评分、类型等,对文档奉献者给予高额补助、流量扶持。假如你也想奉献VIP文档。上传文档
YY_T 1939-2024 医疗器械细菌内毒素实验办法 重组C因子法.docx
专题05 修辞与描绘和阐明办法-2022-2023学年四年级语文上册寒假专项提高(部编).docx
原创力文档创建于2008年,本站为文档C2C买卖形式,即用户上传的文档直接共享给其他用户(可下载、阅览),本站仅仅中心服务渠道,本站一切文档下载所得的收益归上传人一切。原创力文档是网络服务渠道方,若您的权力被损害,请发链接和相关诉求至 电线) ,上传者
