最近头脑有点发热,又回顾(几年之前看过几遍)了一下汇编语言(第二版,王爽著)。
在第二章快要结束时,有个实验1(查看CPU和内存...)。
其中有一个实验任务是修改寄存器CS和IP中的值。
当时书没看仔细(估计是看了好几遍的缘故,有点麻木),没有看明白是如何修改CS和IP的值,加上前面的一节中有讲到如何通过使用jmp指令修改CS和IP,于是想在debug窗口中直接使用jmp指令修改CS和IP,结果出现如下错误。
出现了一个Error,当时就很纳闷,于是百度了一下,发现了有几篇文章也是遇到了这个问题(或许和我想的不是同一个问题),但是它们没有给出解决方案。
只好把这个章节又看了一篇,当时很怀疑能否使用R命令修改CS和IP,结果试了一下竟然成功了,恍然大悟,原来是我理解错了,jmp是用于指令执行的时候修改CS和IP,而不是在debug中直接修改,下图就是正确的修改方式。
#jmp指令的执行。
#在内存地址1000:0写入一段指令。
-a 1000:0
1000:0000 mov ax,1
1000:0003 mov bx,2
1000:0006 jmp 1000:0
1000:0008
#修改寄存器CS和IP的值。
-r cs
cs 0AF4
:1000
-
-r ip
ip 0011
:0
#执行一条指令(mov ax,1),执行之后IP的值为0003。
-t
#执行一条指令(mov bx,2),执行之后IP的值为0006。
-t
#执行一条指令(jmp 1000:0),执行之后IP的值为0000。
-t
额,这难道就是“书读百遍,其义自见”?
分享到:
相关推荐
11.12 标志寄存器在Debug中的表示 实验11 编写子程序 第12章内中断 12.1 内中断的产生 12.2 中断处理程序 12.3 中断向量表 12.4 中断过程 12.5 中断处理程序 12.6 除法错误中断的处理 12.7 编程处理0号...
11.12标志寄存器在Debug中的表示 实验11编写子程序 第12章内中断 12.1内中断的产生 12.2中断处理程序 12.3中断向量表 12.4中断过程 12.5中断处理程序和iret指令 12.6除法错误中断的处理 12.7编程处理0号中断 12.8...
在对源程序文件(ASM文件)汇编时,汇编程序将对ASM文件进行两遍扫描,若程序文件中有语法错误,则结束汇编,汇编程序将指出源程序中存在的错误,这时应返回编辑环境修改源程序中的错误,再经过汇编,直到最后得到无...
2.11 修改CS、IP的指令 2.12 代码段 实验1 查看CPU和内存,用机器指令和汇编指令编程 第3章 寄存器(内存访问) 3.1 内存中字的存储 3.2 DS和[address] 3.3 字的传送 3.4 mov、add、sub指令 3.5 数据段 ...
将数据段中的两个数求和,结果保存在数据段中。源程序、机器语言程序如下: CS:0100 Al 00 00 MOV AX,[0000] CS:0103 03 06 02 00 ADD AX,[0002] CS;0107 A3 04 00 MOV [0004],AX CS:010A CB RETF...
段寄存器CS、DS、ES和SS置为DEBUG程序后的第一个段。 指令指针寄存器IP置为100H(程序段前缀PSP后的第一个语句)。 堆栈指针SP置为段末或COMMAND.COM暂驻部分的结束地址(其中较小的那个地址)。 其余通用...
实 验 一 汇 编 语 言 源 程 序 的 输 入 ...⑵ 在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP寄存器原来的值。 三、实验仪器 微机一台,软盘一块。
提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T命令进行逐步执行,以查看相应结果。 (2) 1.指令...
2.11 修改CS、IP的指令 2.12 代码段 实验1 查看CPU和内存,用机器指令和汇编指令编程 第3章 寄存器(内存访问) 3.1 内存中字的存储 3.2 DS和[address] 3.3 字的传送 3.4 mov、add、sub指令 3.5 数据段 3.6 栈 ...
在DEBUG中地址用段地址与段内地址来表示,而段地址可以明确地指出来,也可以用一个段指示器(段寄存器)来代表,用段寄存器表示时,其段地址就是此寄存器的内含值:如:用段地址和段内地址表示FOFF:0100 用段寄存器...
汇编语言程序设计 实 验 报 告 课程名称 汇编语言程序设计 班 级 姓 名 学 号 指导教师 汇编语言程序设计 实验一 DEBUG 程序使用技巧 1. 寄存器和内存 开始 Debug 程序。输入"Q( " 退出程序。再次启动 Debug。 输入 ...
《IBM—PC汇编语言程序设计》习题参考答案 第 一 章. 习 题 1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) ...
(2)记录断点处DS、CS及IP的值。 (3)数据段DS:0~DS:0F的内容,并记录。 五、思考题 已知从数据段DATA单元开始存放字节型的带符号数X和Y,请设计计算Y=6X+8的程序。( 必做) 实验结果: 四.4数据记录如下: ...
1、使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。(提示:可用A命令将指令写入内存,T命令执行,注意cs:ip) (2)将下面的3条指令写入从2000:0开始的内存单元...
在第一部分源程序中,最左列是数据或指令在该段从0开始的相对偏移地址,向右依次是指令的机器代码字节个数、机器代码和汇编语言语句。机器代码后有字母"R"表示该指令的立即数/位移量现在不能确定或是只是相对地址,...
生成一个汇编语言源程序的纯文本文件?惚嘤镅栽闯绦虻睦┱姑?签qASM。 (2)汇编源程序。用汇编器汇编源程序生成目标代码文件,目标代码文件的扩展名 是?OBJ,汇编器还可以生成列表文件和交叉参考文件?如果源程序有语法...
1、 熟悉中断的概念、中断响应过程、中断向量表以及系统是如何根据中断类型号在中断向量表中得到该中断对应的中断服务程序的入口地址等内容。 2、 掌握中断服务程序的设计方法。 2.7.2 实验预习要求 1、 复习中断的...