回 帖 发 新 帖 刷新版面

主题:初学者求助:王爽《汇编语言》书中的问题

小弟初学汇编,请各位指点:
王爽《汇编语言》书中检测点3.1习题,p52页

在Debug中用"d 0:0 1f"查看内存,结果如下:

0000:0000 70 80 f0 30 ef 60 30 e2-00 80 80 12 66 20 22 60
0000:0000 62 26 e6 d6 cc 2e 3c 3b-ab ba 00 00 26 06 66 88

下面的的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值,

mov ax,1
mov ds,ax
mov ax,[0000]  AX=
mov bx,[0001]  BX=
mov ax,bx      AX=
mov ax,[0000]  AX=
mov bx,[0002]  BX=
add ax,bx      AX=
add ax,[0004]  AX=
mov ax,0       AX=
mov al,[0002]  AX=
mov bx,0       BX=
mov bl,[000c]  BX=
add al,bl      AX=


我在做这道题时,在机上练习用指令"A"写入汇编指令,每写一行用"T"执行,在写入mov ds,ax,然后用T执行时程序出错,退出debug.不知道是什么原因.
还有一个不懂:ds中是段地址,cs中也是段地址,当执行程序
mov ax,1
mov ds,ax
此时段地址1H,而上面CS的段地址是0H,那么程序到底从段地址执行

求助各位!!!

回复列表 (共5个回复)

沙发

这个我还没试过,
不过你应该知道debug必须加载整个程序才能用T来单步执行的,如果你是写一条执行一条的话肯定不行,因为程序在加载前有相应的设置比如PSP空间和重定向等,况且你并不是加载整个程序,而是直接在内存中写入,这样是相当危险的,因为你可能破坏了系统的重要数据和空间,这样的代码是不可能(在windows下)被执行的,会出现程序(调试程序)错误!!

况且这道题目是要你根据以列出的内存中的数据,籍由程序的需要而带入进行运算的!
这些都是假设的情况而已,不可能要你上机调试的!

还有 ds 一般指向数据段的段基址,cs指向代码段的段基址

这里你应该有个概念:代码操作数据!!!
由于汇编里的每以行指令、数据或栈都是要寻址的,所以根据ds:[]来寻址数据,cs:ip来寻址代码,ss:sp来寻址栈!!!
当然这还得根据是否有assume定义了,具体我一时说不清楚,不过王爽先生在书中都有详细说明,
不过你这样调试是危险的!在windows下可以禁止,在纯dos下可能引起死机!

板凳

多谢jonhjack!!"代码和数据"一直是我不怎么分清的概念,您的回复对我帮助很大!

3 楼

王爽老师的汇编语言学习论坛(http://www.asmedu.net)
    人们经常认为汇编语言的应用范围很小,而忽视它的重要性。其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。 
   所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。
   所有程序,不论用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。机器的逻辑功能,软件系统功能构筑其上,硬件系统功能运行于下。 
   汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。 
   学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最佳起点和最有效途径。
                   ----摘自 汇编语言学习论坛(http://www.asmedu.net)

4 楼

从题意可知
首先像这样的题目,你不需要用debug 进行调试,这是没意义,因为它所显示的数据并不和你本机上的一样.
其次在debug里输入这些语句是可以正常用T命令执行的(在纯dos下可能不行,你可以在xp的dos 命令行下学习)
如mov ax,[0000] 对照它上面的数据可知ax=8070H ,

(*"还有一个不懂:ds中是段地址,cs中也是段地址,当执行程序
mov ax,1
mov ds,ax
此时段地址1H,而上面CS的段地址是0H,那么程序到底从段地址执行
"*)

当你输入debug 用R 命令或T命所显示的寄存器的值是不可预测的,你要想真正的了解
CS,DS 是怎么样工作的话最好自己能写一个完整的汇编源程序,编译-连接后用debug 
进行观察.

希望LZ 能先看下别的汇编语言的书,王爽的书对于初学者会产生误导.

5 楼

请问那里有王爽书上用的编译器下载.给个答案吧.
[em1]

我来回复

您尚未登录,请登录后再回复。点此登录或注册