. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于第五章检测题的疑问  [已解决] 回复[ 3次 ]   点击[ 467次 ]  
dongxf
[帖 主]   [ 发表时间:2008-07-03 10:50 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:2
注册日期:2008-06-17 13:34
assume cs:code 
code segment 
start:
  mov ax,code 
        mov ds,ax 
        mov ax,0020h 
        mov es,ax 
        mov bx,0 
s:
        mov al,[bx] 
        mov es:[bx],al 
        inc bx 
        loop s 
        mov ax,4c00h 
        int 21h 
code ends 
end 

  下列说法正确的是______。  
 1、 指令mov ax,code改为mov ax,start对程序要实现的功能没有任何影响。  
 2、 程序不能通过编译,因为在loop指令之前,没有对寄存器cx进行设定。  
 3、 程序实现的功能是将程序的所有指令复制到内存中以0:200h为起始地址的一段内存空间中。  
 4、 程序实现的功能是用内存中以0:200h为起始地址的一段内存空间中的数据将程序的所有指令覆盖。

这道题没有明确指定cx的值,按书上所写,应该程序一启动cx就被赋予程序指令的长度
为了验证这个CX,我编译后用codeview调试,可是在codeview里面cx始终显示0000,调试到loop s这句就死了

后来用debug调试,看到cx=1ah,难道codeview调试程序有问题 ? 还是有其他什么玄机俺不懂,有明白的说说
mess
[第1楼]   [ 回复时间:2008-07-03 17:17 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
codeview没用过,好像叫什么乱码查看器吧。


cx的值,按书上所写,应该程序一启动cx就被赋予程序指令的长度
-----------
这个没错,不过是有条件的。为什么cx存放的是程序的长度,原因是debug加载程序后赋的值,当然如果不用debug加载,cx的值就不知道了,这得看加载程序的东东是怎么设置cx等这些寄存器的。
dongxf
[第2楼]   [ 回复时间:2008-07-03 21:21 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:2
注册日期:2008-06-17 13:34
codeview没用过,好像叫什么乱码查看器吧。
-----------------------------------
codeview是ms c++里附带的dos下调试工具,可以边调试变查看代码,寄存器,内存等等,比debug方便


cx的值,按书上所写,应该程序一启动cx就被赋予程序指令的长度
-----------
这个没错,不过是有条件的。为什么cx存放的是程序的长度,原因是debug加载程序后赋的值,当然如果不用debug加载,cx的值就不知道了,这得看加载程序的东东是怎么设置cx等这些寄存器的。
------------------
看来是debug做了工作,codeview没做这些
dongxf
[第3楼]   [ 回复时间:2008-07-03 21:22 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:2
注册日期:2008-06-17 13:34
此贴由 贴主 于 [ 2008-07-03 21:22 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(mess):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved