. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测题10.3,为什么我看的答案是1010啊?想不通,还有就是下面的程序为什么执行到第14行代码时cs就被改了且出栈值为赋予ax???求指教!!!  [待解决] 回复[ 3次 ]   点击[ 365次 ]  
lishenycy
[帖 主]   [ 发表时间:2012-10-05 18:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-09-30 22:11
assume cs:code,ss:stack

stack segment
  db '0,0,0,0,0,0,0,0'
stack ends

code segment
  start:mov ax,stack
        mov ss,ax
        mov sp,8
        mov ax,0  
        call far ptr s
        inc ax
     s: pop ax
        add ax,ax
        pop bx
        add ax,bx
        mov ax,4c00h
        int 21h 
code ends
end start
****************************************
****************************************
1  assume cs:code,ss:stack
2
3 stack segment
4    db '0,0,0,0,0,0,0,0'
5  stack ends
6
7  code segment
8  start:mov ax,stack
9        mov ss,ax
10        mov sp,8
11        mov ax,0  
12        call far ptr s
13        inc ax
14     s: pop ax
15        add ax,ax
16        pop bx
17        add ax,bx
18        mov ax,4c00h
19        int 21h 
20 code ends
21 end start
fpamc
[第1楼]   [ 回复时间:2012-10-06 08:20 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
检测点10.3 
下面的程序执行后,ax中的数值为多少?  
内存地址   机器码           汇编指令            执行后情况  
1000:0    b8 00 00          mov ax,0           ax=0,ip指向1000:3  
1000:3    9a 09 00 00 10    call far ptr s        相当于pop cs,pop ip,ip指向1000:9  
1000:8    40                inc ax  
1000:9    58                s:pop ax           ax=8h  
                            add ax,ax          ax=10h  
                            pop bx             bx=1000h  
                            add ax,bx          ax=1010h  
call指令执行后,将call下面的指令的第一个字节地址入栈


第二问。cs没改变。你在debug看看。
lishenycy
[第2楼]   [ 回复时间:2012-10-06 10:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-09-30 22:11
回复:[第1楼]
------------------
1000:3    9a 09 00 00 10    call far ptr s        相当于pop cs,pop ip,ip指向1000:9(这里应该是push cs,push ip才对)。第一问我懂了,谢谢了。第二问我再看看。
wenliyun76
[第3楼]   [ 回复时间:2014-09-05 12:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-08-25 09:22
8+8=16 是10进制转16进就是10H
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved