. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->内中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  十二章检测题答案及解析。  [已解决] 回复[ 8次 ]   点击[ 1106次 ]  
towersimper
[帖 主]   [ 发表时间:2008-07-30 22:52 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16
(一)下列指令能通过编译的是 __2___
 1、 div [32] 
 2、 mov ax,ds:[bp] 
 3、 int 121h 
 4、 jmp 32 
这道题,第一次做时,选4,其实是2.当时错误地认为,【bp】前面应该是SS。其实不是这样的。是说当[bp]前面没有段前缀时就默认为SS。如果指明了段寄存器的话,就不会采用默认的SS段寄存器了。div 【32】不能通过,是因为【32】不知是字节单元,还是字单元。另外,【32】前面还应该加上段前缀。如:
assume cs:code
code segment
start:mov ax,0200H
mov ds,ax
mov ax,123H
mov dx,243H
div word ptr ds:[32]
int 21H
code ends
end start
如果【32】前面不加ds前缀,也会出现“Immediate mode illegal”,即立即数寻址方式非法。

(二)在执行int指令前各个寄存器的值如下 
    AX=1221 BX=0005 CX=0014 DX=0000 SP=0016 BP=0000 SI=0000 DI=0000 
    DS=B800 ES=13F4 SS=1404 CS=1404 IP=0012 NV UP EI PL NZ NA PO NC 
    则int指令执行后内存SS:[12H]处的字单元的内容为__3___ 
 1、 B800H 
 2、 3202H 
 3、 1404H 
 4、 0012H 
这题只要记住执行中断例程前,CPU会保护现场,记住先存储标志寄存器,再CS,最后为IP就能解疑了。

(三)关于在执行中断程序前将TF位设置为0下列说法正确的是__2__ 
 1、 设置rep movsb指令的传送方向为正 
 2、 关闭单步中断 
 3、 屏蔽中断 
 4、 没有任何作用 
我们知道执行中断程序时,CPU会保护现场,先存储标志寄存器的值,同事设置TF=0,IF=0,再存储CS,最后为IP。其中TF=0是关闭单步中断的,而IF=0则是为了屏蔽外部中断的。
debugk
[第1楼]   [ 回复时间:2008-09-01 10:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-13 10:30
不错
xlmcktj
[第2楼]   [ 回复时间:2008-10-27 10:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-29 08:35
做第一题时我也存在疑虑,在2和4之间犹郁,最终选了4,4是短跳,也应该是对的呀
fancx
[第3楼]   [ 回复时间:2008-11-01 11:26 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:0
注册日期:2008-08-02 09:52
有疑问:(二)在执行int指令前各个寄存器的值如下  
    AX=1221 BX=0005 CX=0014 DX=0000 SP=0016 BP=0000 SI=0000 DI=0000  
    DS=B800 ES=13F4 SS=1404 CS=1404 IP=0012 NV UP EI PL NZ NA PO NC  
    则int指令执行后内存SS:[12H]处的字单元的内容为__3___  
 1、 B800H  
 2、 3202H  
 3、 1404H  
 4、 0012H  
——————————————————————————————————————
“则int指令执行后内存SS:[12H]处的字单元的内容为” 应该改成“SS:[13H]处的字单元的内容为”    答案才是3、1404h

本题目如果不修改,答案都不对,真实结果应该是0400H
yangle0125
[第4楼]   [ 回复时间:2009-02-05 16:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-09 12:50
jmp 后面必须是标号,不能用立即数
sp从来是减2,没有见过减1的
yangle0125
[第5楼]   [ 回复时间:2009-02-05 16:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-09 12:50
俺做的时候把sp和ip看混了,哎
qiangzi
[第6楼]   [ 回复时间:2010-01-31 22:09 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:6
注册日期:2010-01-07 10:37
回复:[第3楼]
------------------
3楼你错了,出入栈都是以字为单位的,所以原题没错~~~~
towersimper
[第7楼]   [ 回复时间:2010-07-14 14:18 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16
此贴由 贴主 于 [ 2010-07-14 14:18 ] 结贴。 结贴原因:问题已解决
towersimper
[第8楼]   [ 回复时间:2010-07-14 14:19 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16
回复:[贴 主]
------------------
好长时间没有登陆了,呵呵。
得分情况: 3楼(fancx):1分   6楼(qiangzi):1分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved