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

一、实验目的
 理解程序在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)的两行即可。
下面是完成任务过程的截屏:

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

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耗子煨汁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值