第三章 监测点3.2填空题求解
检测点3.2(2)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。mov ax,2000Hmov ds,ax —————————————————— pop pop pop pop pop pop pop pop 这个空我第三个不知道怎么写 希望前辈能给详细的讲下 解题过程 谢谢本帖最后由 风轻云淡_1/10 于 2013-3-1 10:32 编辑
1.设置栈的段地址为1000H
2.将栈顶指向10000H,那么偏移地址就是0,
所以:设置栈段地址需要间接赋值,需要两行,设置栈顶需要一行
mov ax,1000H
mov ss,ax 设置栈段地址
mov sp,0H 栈顶指向数据顶端,
本帖最后由 L]V
答案: mov ax,1000H
mov ss,ax ;把1000H设为栈段
mov sp,0 ;SS:SP指向内存单元 1000H:0
pop ,其中 的默认段地址为ds,即2000H
pop ,意思是把此时SS:SP指向的字节内存单元中的值(23)和比它高一位的字节的内存单元中的值(01)放到ds:中(即地址 2000H:000E); 然后IP = IP + 2,
主要:push 和pop指令处理的数据的大小都是字,即2个字节,这是汇编语言的规定
执行完 pop 之后,ss:sp指向的内存单元是 1000H:0002 ;然后执行下一条指令 pop,原理同上
本人新手 你那个既然用到POP指令势必得用到站 而且题干说吧1000的字逆序存放到 2000的段中 而且2000已经为数据段了 所以1000为站段MOV AX,1000H
MOV SS,AX
MOV SP,16 看了 楼上自行残碎 sp 0
答案: mov ax,1000H
mov ss,ax ;把1000H设为栈段
mov sp,0 ;SS:SP指向内存单元 1000H:0
中的mov sp,0是不是应该是 mov sp,这样的 经过深思熟虑 我发现 这个倒置数据最本质的想法
第一题 把左边的数据列 当做数据段 右边的数据列当做栈段 根据栈的原则 先进后出 直接push操作 就是倒置
第二题 把左边的数据列当做栈段 右边的数据列当做数据段 把栈中的数据Pop出来也是可以倒置数据列的
push pop 后边的内存单元里的数据都是数据段中的 第二题 我就犯迷糊了。还有栈指针sp永远指向栈顶的数据(空栈除外)。
页:
[1]