实验2 汇编源程序编写与汇编调试.pdf
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了实验2 汇编源程序编写与汇编调试.pdf,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6102字,纯文字阅读大概需要9分钟。
内容图文
![实验2 汇编源程序编写与汇编调试.pdf](/upload/InfoBanner/zyjiaocheng/623/8f8b6e7baf9c4e44bb46114aa6289e4a.jpg)
一、实验结论
1. 实验任务1
使用任意一款文本编辑器,编写8086汇编源程序ex1.asm。源代码如下:1 ;ex1.asm 2 assume cs:code 3 code segment 4 mov ax, 0b810h 5 mov ds, ax 6 7 mov byte ptr ds:[0], 1h 8 mov byte ptr ds:[1], 1h 9 mov byte ptr ds:[2], 2h 10 mov byte ptr ds:[3], 2h 11 mov byte ptr ds:[4], 3h 12 mov byte ptr ds:[5], 3h 13 mov byte ptr ds:[6], 4h 14 mov byte ptr ds:[7], 4h 15 16 mov ah, 4ch 17 int 21h 18 code ends 19 end使用masm、link对ex1.asm进行汇编、链接,得到可执行文件ex1.exe,运行效果如下所示:
2. 实验任务2
使用任意一款文本编辑器,编写8086汇编源程序ex2.asm。源代码如下:?1 ;ex2.asm 2 assume cs:code 3 code segment 4 mov ax, 0b810h 5 mov ds, ax 6 7 mov bx, 0h 8 mov ax, 0101h 9 mov cx, 4h 10 s: mov [bx], ax 11 add bx, 2h 12 add ax, 101h 13 loop s 14 15 mov ah, 4ch 16 int 21h 17 code ends 18 end使用masm、link对ex2.asm进行汇编、链接,得到可执行文件ex2.exe,运行效果如下所示:
3. 实验任务3
任务:综合使用 loop,[bx],编写完整汇编程序,实现向内存b800:07b8开始的连续16个字单元重复填充字数据?0237H。 实现以上任务的源代码如下所示:1 ;ex4.asm 2 assume cs:code 3 code segment 4 mov ax, 0b800h 5 mov ds, ax 6 mov bx, 07b8h 7 mov ax, 0237h 8 mov cx, 16h 9 10 x: mov [bx], ax 11 add bx, 2h 12 loop x 13 14 mov ah, 4ch 15 int 21h 16 code ends 17 end使用masm、link对ex4.asm进行汇编、链接,得到可执行文件ex4.exe,运行效果如下所示:
运行 ex4.exe,运行效果如下图所示:
4. 实验任务4
任务:编写完整汇编源程序,实现向内存0:200~0:23F依次传送数据0~63(3FH)。 1)综合使用?[bx]?和?loop,编写汇编源程序实现,源程序如下:1 assume cs:code 2 code segment 3 mov ax, 0 4 mov ds, ax 5 mov bx, 200h 6 mov ax, 0 7 mov cx, 40h 8 9 s: mov [bx] ,al 10 inc ax 11 inc bx 12 loop s 13 14 mov ax, 4c00h 15 int 21h 16 code ends 17 end
以上源程序运行的具体过程如下图所示:
1 assume cs:code 2 code segment 3 mov ax, 0 4 mov ss, ax 5 mov sp, 0240h 6 mov ah, 3fh 7 8 s: push ax 9 dec ah 10 inc sp 11 loop s 12 13 mov ah, 4ch 14 int 21h 15 code ends 16 end
以上源程序运行的具体过程如下图所示:
5. 实验任务5
?任务:下面的程序功能是将“ mov ax, 4c00h ”之前的指令复制到内存 0:200 处,补全程序。上机调试,跟踪运行结果。 ?实现以上任务的源代码如下:(其中带下划线的是需要我们补全的代码)1 assume cs:code 2 code segment 3 mov ax, _cs_ 4 mov ds, ax 5 mov ax, 0020h 6 mov es, ax 7 mov bx, 0 8 mov cx, _17h_ 9 10 s: mov al,[bx] 11 mov es:[bx], al 12 inc bx 13 loop s 14 15 mov ax, 4c00h 16 int 21h 17 code ends 18 end?从汇编代码整体观之,要想完成第一个空的填写,就需要明白 ds寄存器应该指向哪里,由于本任务是想要 ?汇编实现代码自己复制自己到内存的另一块,那么很明显该复制的数据应该来自代码本身所对应的机器码。 ?所以此时 ds寄存器的值应该等于 cs寄存器的值,这样才可以从内存单元取出机器码复制到另外一个内存块; ?接下来需要完成第二空,我们知道 cx寄存器是用来控制程序循环的次数。从循环体中可以看出,每次循环 ?都取出一个字节的机器码并且复制到另一块内存单元上,所以我们必须得知道“ mov ax, 4c00h ”之前的指令 ?对应的机器码要占用多少字节,这样才能控制循环次数。遗憾的是,我们并不知道各类机器码所占用的字节数。 ?为了获取“ mov ax, 4c00h ”之前的指令对应的机器码占用字节数,我们随意使用一个数据(假设使用“ 1122h ”) ?将第二空填上,让其通过编译,链接,然后使用 debug工具来反编译汇编代码,这样就可以获取确实的机器码 ?字节数了,具体执行如下图所示:
内容总结
以上是互联网集市为您收集整理的实验2 汇编源程序编写与汇编调试.pdf全部内容,希望文章能够帮你解决实验2 汇编源程序编写与汇编调试.pdf所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。