Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >汇编语言篇——编程环境:编程、汇编、连接、跟踪

汇编语言篇——编程环境:编程、汇编、连接、跟踪

原创
作者头像
会洗碗的CV工程师
发布于 2023-11-30 15:47:47
发布于 2023-11-30 15:47:47
3270
举报
文章被收录于专栏:LongJava学习资料LongJava学习资料

实验目的和要求

1、掌握汇编语言的编程环境:编程、汇编、连接、跟踪;

2、理解8086CPU的工作过程。

实验环境

Debug

实验内容及结果

1、 编写完整的汇编语言源程序,然后汇编、连接、运行、跟踪;

Assume cs:codesg

Codesg segment

Mov ax,2000H                 ax = 2000H

Mov ss,ax                    ss = 2000H

Mov sp 0                     sp = 0

add sp,10                    sp = 000AH(10转化为16进制)

Pop ax                       ax = 0000H(因为栈里面啥也没有) sp=000CH

Pop bx                       bx = 0000H,sp=000EH

Push ax                      sp = 000CH

Push bx                      sp = 000AH

Pop ax                       sp = 000CH

Pop bx                       sp = 000EH

Mov ax,4c00H                 ax = 4c00H

Int 21H

Codesg ends

End

2、使用debug,逐条执行,观察指令执行后的实际运行情况。

实验分析

可以看到运行完以上程序之后,psp里面的内容从第075A:0019H个开始的内容就发生了变化主要原因是因为psp是程序前缀区,后面着的是程序存放区,可能发生某些不为人知的东西导致了psp的内容发生变化

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【汇编语言】[BX]和loop指令(三)—— Debug与masm的指令处理差异与loop,[bx]的联合应用
但是在汇编源程序中,指令“mov ax,[0]”被编译器当作指令“mov ax,0”处理。
Crossoads
2024/11/13
990
【汇编语言】[BX]和loop指令(三)—— Debug与masm的指令处理差异与loop,[bx]的联合应用
【汇编语言】寄存器(CPU工作原理)(五)—— 段寄存器以及CS和IP
我们前面讲到,8086CPU在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。这里,需要看一下,是什么部件提供段地址。段地址在8086CPU的段存器中存放。8086CPU有4个存器:CS、DS、SS、ES。当8086CPU 要访问内存时由这4个段寄存器提供内存单元的段地址。本章中只看一下CS。
Crossoads
2024/10/22
2330
【汇编语言】寄存器(CPU工作原理)(五)—— 段寄存器以及CS和IP
【汇编语言】[BX]和loop指令(二)——在Debug中跟踪用loop指令实现的循环程序
ffff:0006 单元中的数是一个字节型的数据,范围在0-255之间,则用它和3相乘结果不会大于65535,可以在dx中存放下。
Crossoads
2024/11/13
1120
【汇编语言】[BX]和loop指令(二)——在Debug中跟踪用loop指令实现的循环程序
8086汇编语言之数据段和代码段以及栈段的理解
代码从 MOV AX 0220H 开始,那么代码段指向这行代码地址, 如果想要跳过这行代码的执行,那么进行代码段偏移
乱码三千
2021/08/24
2.3K0
DOS汇编DEBUG基本命令及其功能详解
**Debug总结:**它是DOS、Windows 都提供的实模式(8086 方式)程序的调试工具。使用它,可以查看CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
timerring
2022/07/20
3K0
DOS汇编DEBUG基本命令及其功能详解
【汇编语言】[BX]和loop指令(一)—— 初识[BX]和loop指令
和[0]有些类似,[0]表示内存单元,它的偏移地址是0。比如在下面的指令中(但是注意这个是在 Debug 中使用的方式):
Crossoads
2024/11/13
5370
【汇编语言】[BX]和loop指令(一)—— 初识[BX]和loop指令
汇编语言篇——8086CPU的栈机制,掌握栈的使用
(1).使用debug,将给定的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
会洗碗的CV工程师
2023/11/30
4060
汇编语言篇——8086CPU的栈机制,掌握栈的使用
汇编语言 手记8
栈有两个基本的操作:入栈和出栈 入栈:将一个新的元素放到栈顶 出栈:从栈顶取出一个元素 栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。 栈的操作规则:LIFO 8086CPU提供相关的指令来以栈的方式访问内存空间。 入栈出栈指令: PUSH(入栈)POP(出栈) push ax   将寄存器ax中的数据送入栈中; pop ax   从栈顶取出数据送入ax 均是以字为单位进行的。 字型数据用两个单元存放,高地址单元放高8位,低地址单元放低8位。 段寄存器SS 存放栈顶的段地址 寄存器SP 存放栈顶的
用户1154259
2018/01/17
9060
汇编语言 手记8
汇编语言学习
   7、1Byte = 8bit ;    1KB = 1024B ;  1MB = 1024KB ;   1GB = 1024MB
tandaxia
2018/09/27
1.6K0
汇编语言学习
8086汇编语言之各个通用寄存器的作用
1. asm编译器无法识别中括号,mov ax,[0]编译时会默认去除中括号.使用bx替代可以解决这个问题,如果在debug模式下使用-a命令输入中括号则没有问题,可以正常识别
乱码三千
2021/08/24
1.2K0
汇编语言访问寄存器和内存篇---02
注意: 并不是一个物理地址就可以决定一个段地址,而是当我们给出一个段地址后,通过适当调整,即加上一个偏移地址,就可以得到一个物理地址,看下面的例子:
大忽悠爱学习
2022/06/19
9140
汇编语言访问寄存器和内存篇---02
【汇编】(四)寄存器(内存访问)
问题: (1)0地址单元中存放的字节型数据是多少? 20H (2)0地址字单元中存放的字型数据是多少? 4E20H (3)2地址单元中存放的字节型数据是多少? 12H (4)2地址字单元中存放的字型数据是多少? 0012H (5)1地址字单元中存放的字型数据是多少? 124EH
sidiot
2023/08/31
3830
【汇编】(四)寄存器(内存访问)
【汇编语言】[BX]和loop指令(四)—— 汇编语言中的段前缀与内存保护:原理与应用解析
指令“mov ax,[bx]”中,内存单元的偏移地址由bx给出,而段地址默认在 ds中。我们可以在访问内存单元的指令中显式地给出内存单元的段地址所在的段寄存器。比如:
Crossoads
2024/11/13
960
【汇编语言】[BX]和loop指令(四)—— 汇编语言中的段前缀与内存保护:原理与应用解析
【汇编语言】数据处理的两个基本问题(一) —— 汇编语言中的数据奥秘:数据位置与寻址方式总结
本章对前面的所有内容是具有总结性的。我们知道,计算机是进行数据处理、运算的机器,那么有两个基本的问题就包含在其中:
Crossoads
2024/11/21
1110
【汇编语言】数据处理的两个基本问题(一) —— 汇编语言中的数据奥秘:数据位置与寻址方式总结
【汇编语言】外中断(二)—— 键盘的奥秘:编写自己的 int 9 中断例程
上面的过程中,第1、2、3步都是由硬件系统完成的。我们能够改变的只有int9中断处理程序。我们可以重新编写int9中断例程,按照自己的意图来处理键盘的输入。
Crossoads
2025/01/03
1040
汇编语言篇——顺序程序、循环程序设计
2、下面的程序的功能时将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序,上机调试,跟踪运行结果。
会洗碗的CV工程师
2023/11/30
4440
汇编语言篇——顺序程序、循环程序设计
【汇编语言】外中断(三)—— 探秘汇编外中断:从安装新INT 9例程到指令系统总结
下面,我们将安装一个新的int 9中断例程,使得原int 9中断例程的功能得到扩展。
Crossoads
2025/01/20
390
【汇编语言】内中断(三) —— 中断探险:从do0到特殊响应的奇妙旅程
注意,“overflow !“在上面程序的data段中。程序执行完成后返回,它所占用的内存空间被系统释放,而在其中存放的“overfow!”也将很可能被别的信息覆盖。
Crossoads
2024/12/29
1320
【汇编语言】内中断(三) —— 中断探险:从do0到特殊响应的奇妙旅程
【汇编语言】更灵活的定位内存地址的方法(二)—— 从 [bx+idata] 到 [bx+si+idata]:让你灵活的访问内存
在前面,我们用[bx]的方式来指明一个内存单元,还可以用一种更为灵活的方式来指明内存单元:[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata(bx 中的数值加上idata)。
Crossoads
2024/11/21
950
【汇编】(六)[BX] 和 Loop 指令
我们要完整地描述一个内存单元,需要两种信息: (1)内存单元的地址; (2)内存单元的长度(类型);
sidiot
2023/08/31
2830
【汇编】(六)[BX] 和 Loop 指令
推荐阅读
【汇编语言】[BX]和loop指令(三)—— Debug与masm的指令处理差异与loop,[bx]的联合应用
990
【汇编语言】寄存器(CPU工作原理)(五)—— 段寄存器以及CS和IP
2330
【汇编语言】[BX]和loop指令(二)——在Debug中跟踪用loop指令实现的循环程序
1120
8086汇编语言之数据段和代码段以及栈段的理解
2.3K0
DOS汇编DEBUG基本命令及其功能详解
3K0
【汇编语言】[BX]和loop指令(一)—— 初识[BX]和loop指令
5370
汇编语言篇——8086CPU的栈机制,掌握栈的使用
4060
汇编语言 手记8
9060
汇编语言学习
1.6K0
8086汇编语言之各个通用寄存器的作用
1.2K0
汇编语言访问寄存器和内存篇---02
9140
【汇编】(四)寄存器(内存访问)
3830
【汇编语言】[BX]和loop指令(四)—— 汇编语言中的段前缀与内存保护:原理与应用解析
960
【汇编语言】数据处理的两个基本问题(一) —— 汇编语言中的数据奥秘:数据位置与寻址方式总结
1110
【汇编语言】外中断(二)—— 键盘的奥秘:编写自己的 int 9 中断例程
1040
汇编语言篇——顺序程序、循环程序设计
4440
【汇编语言】外中断(三)—— 探秘汇编外中断:从安装新INT 9例程到指令系统总结
390
【汇编语言】内中断(三) —— 中断探险:从do0到特殊响应的奇妙旅程
1320
【汇编语言】更灵活的定位内存地址的方法(二)—— 从 [bx+idata] 到 [bx+si+idata]:让你灵活的访问内存
950
【汇编】(六)[BX] 和 Loop 指令
2830
相关推荐
【汇编语言】[BX]和loop指令(三)—— Debug与masm的指令处理差异与loop,[bx]的联合应用
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文