cpu 执行ret指令是,相当于进行:
pop ip
cpu 执行retf指令是,相当于进行:
pop ip
pop cs
》》》》》》》》》》》》》》
10.(1)
实现从内存1000:0000处开始执行指令。
assume cs:codesg,stack:stacksg
stacksg segment
db 16 dup (0)
stacksg ends
codesg segment
start: mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,1000...


- [fellow2468] 呵呵 谢谢指正!! 05/13 21:45
- [crazyman] 检测点的答案没有问题。 05/04 22:07
- [crazyman] cpu 执行ret指令是,相当于进行: pop ip pop cs ========== 05/04 22:05
- [martian] 博主的程序功能实现正确,要继续加油啊! 04/14 21:29
- [wdm] 当然我觉得博主分析的很有道理。 我得在去学习,研究一哈。 看看obj文件应该能知道吧。呵呵 04/12 16:05
- [wdm] data是经过编译链接后成为该段的一个偏移值.编译器编译mov ax, data时,不能把data定 04/12 15:57
- [wdm] 说的很清楚啊! 参考别人的意见的时候,也要反思自己的不足,这样才有参考的价值和意义。 04/03 10:41
- [游客] 分析正确。 04/02 22:07
- [taotling] XXXX*10H+FFFFH=20000H XXXX*10H=20000H-FFFFH XXXX 03/24 17:58
- [wdm] 分析正确! 03/23 19:54
- [fellow2468] 现在已经通过了第三章的检测,自己感觉学 的还可以,有了基础,我会更加认真的学习下面的内容! 03/27 22:05
- [fellow2468] 刚刚来到汇编网,希望得到大家的帮助!也希望自己有一个大的提高!! 03/19 21:35
[2008-05-04 21:17] 第十章检测点!!
阅读全文 |
评论次数(3) |
浏览次数(709) |
所属类型(汇编作业)
[2008-04-14 21:07] 实验6 程序!!
将datasg段中的每个单词的前3个字母改为大写字母.
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db ' ibmd '
db ' decb '
db ' dosm '
db ' vaxk ' ;每组都从1号单元开始 0号单元为空格
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start:
mov a...
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db ' ibmd '
db ' decb '
db ' dosm '
db ' vaxk ' ;每组都从1号单元开始 0号单元为空格
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start:
mov a...
阅读全文 |
评论次数(1) |
浏览次数(592) |
所属类型(汇编作业)
[2008-04-11 21:21] 第六章检测题!
1
在Intel8086环境下,下列说法合理的是__3___。
1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。
2、 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。
3、 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间
存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。
4、 用DW和DD定义进行的数据,只能够以字为单位访问。
解释(选项2):data是经过编译链接后成为该段的一个偏移值.编译器编译mov ax, data时,不能把data定为一个绝对...
在Intel8086环境下,下列说法合理的是__3___。
1、 汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。
2、 一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。
3、 如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间
存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。
4、 用DW和DD定义进行的数据,只能够以字为单位访问。
解释(选项2):data是经过编译链接后成为该段的一个偏移值.编译器编译mov ax, data时,不能把data定为一个绝对...
阅读全文 |
评论次数(2) |
浏览次数(666) |
所属类型(学习心得)
[2008-04-02 21:33] 实验4(3)的问题!!
添加后的程序:
assume cs:codesg
codesg segment
mov ax,cs
mov ds,ax
mov ax,0200h
mov es,ax
mov bx,0
mov cx,17h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end
第一处空的填写思路:
根据前面的知识,我们知道,CS:0000H处为代码起始处,
所以我们要把取值的DS设置为程...
assume cs:codesg
codesg segment
mov ax,cs
mov ds,ax
mov ax,0200h
mov es,ax
mov bx,0
mov cx,17h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end
第一处空的填写思路:
根据前面的知识,我们知道,CS:0000H处为代码起始处,
所以我们要把取值的DS设置为程...
阅读全文 |
评论次数(2) |
浏览次数(541) |
所属类型(在线学习)
[2008-03-29 20:16] 关于DEBUG中MOV 指令的 段跨越操作
mov es:[bx],al在debug中输入,提示错误:
mov es:[bx],al
^Error
怎么回事?
有人说mov ds:[0],ax这样的指令,在Debug下直接写为"mov ds[0],ax"
也就是把冒号去掉就可以。
对于这个格式:段寄存器[偏移值],ax
我觉得对于DS来说,即使把ds去掉直接写成mov [0],ax也成。
但遇到其他的段寄存器,如:cs,ss,es等就不能写成"段寄存器[偏移值],ax"这样了,
即使写成省略冒号的形式不报错, ...
mov es:[bx],al
^Error
怎么回事?
有人说mov ds:[0],ax这样的指令,在Debug下直接写为"mov ds[0],ax"
也就是把冒号去掉就可以。
对于这个格式:段寄存器[偏移值],ax
我觉得对于DS来说,即使把ds去掉直接写成mov [0],ax也成。
但遇到其他的段寄存器,如:cs,ss,es等就不能写成"段寄存器[偏移值],ax"这样了,
即使写成省略冒号的形式不报错, ...
阅读全文 |
评论次数(0) |
浏览次数(546) |
所属类型(在线学习)
[2008-03-22 19:52] 检测点2.3
mov ax,bx
sub ax,ax
jmp ax
问题是问IP的值修改了多少次,IP的值最后是多少.
分析:
读入mov ax, bx前,IP指向指令mov ax, bx的首地址B
第1次:读入mov ax, bx后,IP指向指令sub ax, ax的首地址C;
第2次:执行完mov ax, bx后,读入sub ax, ax, 此时IP指向指令jmp ax的首地址D;
第3次:执行完sub ax, ax后,读入jmp ax,此时IP指向指令jmp ax的下一条指令的首地址E;
第4次:执行完jmp ax后; IP等于寄存器ax的值,为001...
sub ax,ax
jmp ax
问题是问IP的值修改了多少次,IP的值最后是多少.
分析:
读入mov ax, bx前,IP指向指令mov ax, bx的首地址B
第1次:读入mov ax, bx后,IP指向指令sub ax, ax的首地址C;
第2次:执行完mov ax, bx后,读入sub ax, ax, 此时IP指向指令jmp ax的首地址D;
第3次:执行完sub ax, ax后,读入jmp ax,此时IP指向指令jmp ax的下一条指令的首地址E;
第4次:执行完jmp ax后; IP等于寄存器ax的值,为001...
阅读全文 |
评论次数(1) |
浏览次数(564) |
所属类型(在线学习)
[2008-03-21 21:15]
检测点2.2的一个问题
2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为(),最大为()
(最小为1001,最大为2000) 。
如果SA为0000H,那么再给一个偏移地址是多少,我们才能使最终的物理地址为20000H呢?
显然,偏移地址最多取到FFFFH。
如果SA0000H左移一位,为00000H,再加上偏移地址从最小值0000H到最大值FFFFH,我们看看最终的物理地址的范围为:00000H~0FFFFH,显然到不了所要的物理地址:20000H。所以另求解决方式。
根据上面的思路进行扩展:
当偏移地址取最大的时...
(最小为1001,最大为2000) 。
如果SA为0000H,那么再给一个偏移地址是多少,我们才能使最终的物理地址为20000H呢?
显然,偏移地址最多取到FFFFH。
如果SA0000H左移一位,为00000H,再加上偏移地址从最小值0000H到最大值FFFFH,我们看看最终的物理地址的范围为:00000H~0FFFFH,显然到不了所要的物理地址:20000H。所以另求解决方式。
根据上面的思路进行扩展:
当偏移地址取最大的时...
阅读全文 |
评论次数(3) |
浏览次数(1023) |
所属类型(在线学习)