0
点赞
收藏
分享

微信扫一扫

实验二 汇编语言程序初体验

程序员伟杰 2022-04-21 阅读 108

一、实验目的
 理解程序在CS和IP寄存器的控制下运行的过程
 学会观察栈工作的过程
 学会由汇编语言源程序到可执行文件的生成过程,学会用Debug运行程序

二、实验内容过程记录
任务1-理解程序的执行过程
内存中的情况如下图:
在这里插入图片描述

各寄存器的初始值为:(CS)=2000H, (IP)=0, (DS)=1000H, (AX)=0, (BX)=0
1-1 用“人脑”完成
序号 (1)写出CPU执行的指令序列 (2)CS、IP和相关寄存器中数值的变化
1 Mov ax,6622H CS=2000;IP=3;ax=6622;bx=0;
2 Jmp 0ff0:0100 CS=0ff0;IP=0100;ax=6622;bx=0;
3 Mov ax,2000H CS=0ff0;IP=0103;ax=2000;bx=0;
4 Mov ds,ax CS=0ff0;IP=0105;ax=2000;bx=0;ds=2000;
5 Mov ax,[0008] CS=0ff0;IP=0108;ax=c189;bx=0;ds=2000;
6 Mov ax,[0002] CS=0ff0;IP=010b;ax=ea66;bx=0;ds=2000;
1-2 用“电脑”验证:
在debug中布置出如上所示的环境(预置内存和寄存器的值),截屏:
在这里插入图片描述

任务2-理解栈机制
已知(SS)=3000H,(SP)=200H,(AX)=785AH,(BX)=1234H
2-1 在下面空白处写下你的“人脑”run的结果(请在分析的过程中,在草稿纸上画出栈的结构来)
先执行下面的指令
PUSH AX
PUSH BX
此时
(SS)= 3000__
(SP)= 1fc____
存放12H的字节数据的物理地址是__01fd____
再执行
POP AX
POP BX
此时
(AX)= 1234____
(BX)= 785a____
栈结构如下图所示(可以将草稿纸上内容拍照插入)

在这里插入图片描述

2-2 用“电脑”验证:在debug中布置环境,运行上面的程序,通过查看栈区的数据,验证你的上述结论。
下面是验证过程的截屏:
在这里插入图片描述
在这里插入图片描述 在这里插入图片描述

提示:在做下面任务之前,请看完视频“0402 由源程序到程序运行”和“0403 用Debug跟踪程序的执行”
任务3-编制第一个汇编程序
(1)将下面的程序保存为p1.asm,将其生成可执行文件p1.exe。
assume cs:codesg
codesg segment
mov ax,0123H ;(1)
add ax,ax ;(2)

     mov ax,4c00h
     int 21h

codesg ends
end
(2)在Debug中单步执行这个程序
下面是编辑、编译、连接、运行的各个步骤的截图:

在这里插入图片描述

(3)请修改这个程序,使其能完成的任务是
 传送25H到AL寄存器
 将AL的内容乘以2
 传送15H到BL寄存器
 AL的内容加上BL的内容
完成程序的编辑、编译、连接、运行,并截图说明
提示:用4条指令替换p1.asm中的加注释(1)和(2)的两行即可。
下面是完成任务过程的截屏:

在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论