. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  我郁闷,我抓狂  [已解决] 回复[ 4次 ]   点击[ 511次 ]  
jhszcn
[帖 主]   [ 发表时间:2008-03-30 07:55 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:22
注册日期:2008-03-17 22:23
今天做第十章检测题,书看了两遍,还是没有找到哪一题做错了,为什么错了,请大哥大姐指点迷睛 
补全程序,实现从内存1000:0处开始执行指令。  
assume cs:code  
    stack segment  
    db 16 dup(0)  
    stack ends  
    code segment  
    start: mov ax,stack  
    mov ss,ax  
    mov sp,16  
    mov ax,____  
    push ax  
    mov ax,____  
    push ax  
    retf  
    code ends  
    end start  
 1、 cs,ip  
 2、 0,1000h  
 3、 1000h,0  
 4、 0,1000  
------------------------- 
这题我选3,一定没错 

某程序中定义了如下数据:  
    data segment  
    db "Hello"  
    db 'world'  
    db "!"  
    db 'W','elcome'  
    db "to","masm!"  
    db "Bye",'b','ye!'  
    dw 0,1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh  
    dd 16 dup (0)  
    data ends  
    下列说法正确的是______。  
 1、 该程序加载后其中的字符数据和数字数据在内存中都是以ASCII码的形式存放的。  
 2、 该程序加载后这组数据在内存中所占用实际空间是90HB。  
 3、 该数据段定义可放在该程序中end伪指令之前的任何位置。  
 4、 在编译阶段,该程序因如此定义数据而报错。  
------------------ 
这题我选2 
1是2进制存在内存中,所以是错的 
3是错的,因为不可能放在代码段中 
4是错的,因为我编译过了 
再说2,实际上数据占80HB,还有双“”的数据,我怎么没有在书上看到过呢? 

对下列程序说法正确的是_____。  
    assume cs:codesg  
    stack segment  
    dw 10 dup (0)  
    stack ends  
    codesg segment  
    mov ax,4c00h  
    int 21h  
    start: mov ax,stack  
    mov ss,ax  
    mov sp,20  
    mov ax,0  
    push cs  
    push ax  
    mov bx,0  
    retf  
    codesg ends  
    end start  
 1、 程序中start之后的汇编指令不能得到执行。  
 2、 程序加载后stack段在内存中实际占用的内存空间是20b。  
 3、 程序的每一条指令都能获得执行,但不能正常返回。  
 4、 指令retf可替换为ret,并能够正常返回。  
------------------------ 
这题我选4 
1是错的,2有点不明确,3程序可以正常返回,4是对的,因为ret相当于pop ip,在当前段中 

下面的程序执行后,ax中的数值是多少____  
    内存地址 机器码 汇编指令  
    1000:0 b8 00 00 mov ax,6  
    1000:2 ff d0 call ax  
    1000:5 40 inc ax  
    1000:6 mov bp,sp  
    add ax,[bp]  
 1、 11  
 2、 8  
 3、 9  
 4、 12  
------------------------ 

这题我选的,一定没错 

下列哪条指令不能够使CS:IP指向当前内存段范围内以s为标号的代码段______。  
 1、 jmp near ptr s  
 2、 jmp far ptr s  
 3、 call near ptr s  
 4、 call word ptr s  
------------------------------- 

我题我选4 
1,近跳转,16位偏移,没有错 
2,远跳转,cs=s所在段(当前段),ip=s的地址 
3,call near ptr s,ip压栈,ip=s的地址 
4,call word ptr s,这后面不是只可以接内存单元吗?我觉得是错的
coco
[第1楼]   [ 回复时间:2008-03-30 11:21 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:0
注册日期:2007-11-13 09:24
先顶一下,然后回复。
coco
[第2楼]   [ 回复时间:2008-03-30 11:35 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:0
注册日期:2007-11-13 09:24
某程序中定义了如下数据:  
    data segment  
    db "Hello"  
    db 'world'  
    db "!"  
    db 'W','elcome'  
    db "to","masm!"  
    db "Bye",'b','ye!'  
    dw 0,1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh  
    dd 16 dup (0)  
    data ends  
    下列说法正确的是______。  
 1、 该程序加载后其中的字符数据和数字数据在内存中都是以ASCII码的形式存放的。  
 2、 该程序加载后这组数据在内存中所占用实际空间是90HB。  
 3、 该数据段定义可放在该程序中end伪指令之前的任何位置。  
 4、 在编译阶段,该程序因如此定义数据而报错。  
------------------ 
这题我选2 
1是2进制存在内存中,所以是错的 
3是错的,因为不可能放在代码段中 
4是错的,因为我编译过了 
再说2,实际上数据占80HB,还有双“”的数据,我怎么没有在书上看到过呢? 

---------
3是错的,因为不可能放在代码段中 
你的这句话理解有错误。
jhszcn
[第3楼]   [ 回复时间:2008-03-30 11:46 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:22
注册日期:2008-03-17 22:23
可以说的详细点吗
jhszcn
[第4楼]   [ 回复时间:2008-03-31 08:34 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:22
注册日期:2008-03-17 22:23
此贴由 贴主 于 [ 2008-03-31 08:34 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(coco):6分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved