|
|
10鱼币
有两个问题,是王爽第十章的题,希望大家帮忙解答,
嘻嘻{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}
问题一:下面括号中指令的作用 ,我感觉只改变一下bx的值为0,没有其他作用了,对吗
assume cs:code
stack segment
db 16 dup (0)
stack ends
code segment
mov ax,4c00h
int 21h
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,0
push ax
《mov bx,0》
ret
code ends
end start
问题二:
题目是:下面程序执行后,ax的值为多少?
我的问题是下面括号中《add ax,bx》中的bx值不确定,所以每个人最后的ax值都不一样,我想的对吗?
mov ax,0
call far ptr s
inc ax
s: pop ax
add ax,ax
pop bx
add ax,bx
|
最佳答案
查看完整内容
第一个问题:还是有作用的,这个程序只是为了让你更加深刻的了解ret指令的原理,因为你把大小为一个字的数据0压入了栈中,执行ret指令后,IP的值改变了,IP的值变为了0,现在程序就跳转到了第一条指令(mov ax,4c00h)了
第二个问题:ax的值为1010h,注意这是个十六进制数,根据你这个帖子是看不出来bx是什么值的,你看看书上左边有对应的内存地址和机器码,这个还是为了让你加深call指令的使用,调用call指令时,CS和IP都入栈, ...
|