- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编言语 课后实验
汇编语言 课后实验1~5
预备试验1
一.用R命令
1.用R命令查看寄存器的内容:
如下,CS=14E5,IP=0100,也就是说当前CPU要读取、执行14E5:0100出的指令;
且该内存单元所存放的机器码为:FE 74 05,对应的汇编指令为:PUSH [SI+05]
用R命令来修改寄存器中的内容:
如下,将AX中的值修改成1111,并查看修改结果。
还可以用R命令修改CS和IP中的值,如下:
D命令
使用“d 段地址:偏移地址”的格式,debug将列出从指定单元开始的128个内存单元的内容,如下:左边部分是每行的起始地址,中间是从指定地址开始的128个内存单元中的内容,右边部分是每个单元中数据对应的可显示的ASCII码字符,没有可显示的字符用"."来表示。
2.也可以用D命令直接查看,将列出debug预设命令的地址处的内容,如下:
也可以指定D命令的查看范围:格式“d 段地址:起始偏移地址 结尾偏移地址”,
如下:
E命令
用“e 起始地址 数据 数据......”的格式来改写内存中的内容,如下:先用d命令查看原来地址中的内容,然后用e 命令修改后再查看。
也可以采用提问的方式来一个一个的改写内存中的内容,不用改写的直接按空格键跳过,修改完毕后按enter键结束操作,如以下1000:10中的内容没有改写。
还可以用e命令向内存中写入字符和字符串。
如何用命令向内存中写入机器码,查看机器码,并执行机器码。
用E 命令向内从中写入机器码:如下,写入后再查看内存中的内容。
2.用U命令将内存单元中的内容翻译为汇编指令,没有写终止地址的,都默认对20H个字节的内容进行反汇编。
3.用t 命令来执行我们写入的指令,在使用t 命令之前要用r 命令修改cs,ip寄存器中的内
容,使它们指向我们所写机器码的初始地址,如下:
可以用A命令以汇编指令的形式直接在内存中写入机器指令。
使用A命令写入汇编指令时,在给出的其实地址后直接按enter键则表示操作结束。
写完汇编指令后,debug会将这些汇编指令翻译为对应的机器指令,并将它们写到对应的内存中,可以用d命令查看,如下:
实验一:
用debug将程序写入内存并执行。
1)将程序写入内存
2)设置cs,ip的值
3)逐步执行程序
将指令写入指定的内存单元,利用这三条指令计算三条2的8次方。
1)将指令写入内存,并改变cs,ip的值
2)运行
查看内存中的内容:在pc机主板上的ROM中有一个生产日期,在内存FFF00H~FFFFFH中,找到它,并试图修改它。
1)如下:日期是2010年10月20日
试图修改它,如下:
无法修改该日期,因为该生产日期是在ROM区,只可读不可写。
4.
预备试验2
关于D命令:
1)用段寄存器ds查看内存中的内容
查看当前代码段中的指令代码
查看当前栈段中的内容
在E、A、U命令中使用段寄存器
1)利用段寄存器在指定的内存中写入数据
以汇编指令的形式显示当前代码段中的代码
以汇编指令的形式,向指定单元中写入指令
T命令对栈代码段中指令的执行情况
实验二
将一下代码写入内存,逐步执行,并根据实际情况填空。
暂时不明白为什么2000:0~2000:f中的内容会发生改变。
实验3 编程、编译、连接、跟踪
将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。
(2)用debug追踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。
(3)psp的头两个字节是CD 20,用debug加载t1.exe,查看psp的内容。
实验4.
(1)编程,向内存0:200~0:23f依次传送数据0~63.
assume cs:code
code segment
mov ax,0
mov ds,ax
mov bx,200h
mov al,0
mov cx,64
s:mov ds:[bx],al
inc bx
inc al
loop s
mov ax,4c00h
int 21h
code ends
end
(2)编程,向内存0:200~0:23f依次传送数据0~63,程序中只能使用9条指令,9条指令中包括“mov ax,4c00h”和“int 21h”
(3)下面程序的功能是将“mov ax,4c00h”之前的指令富孩子到内存0:200处,补全程序。
assu
文档评论(0)