汇编语言第三章

Posted dreamlocker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言第三章相关的知识,希望对你有一定的参考价值。

一、知识点(博主自认为关键的几点)

1.把值存入段寄存器ds:需通过先给数据寄存器值(ax, bx, cx, dx),再送入ds中

如:

mov ax,2000
mov ds,ax

 

2.字数据的存取原则:

字数据的低位字节存放在低地址内存单元;高位则放于高位地址;(小端法)

如:124EH在内存中的存放位置如下:

技术分享图片(且地址为[1])

 

3.关于mov指令值得注意的一点,当作为第二个操作数的常数最高位为a-f时,前面要加0

 

4.SS:SP,与ds相同,ss也不能直接送值

 

二、小测试

栈的使用主要需要注意使用pop和push指令时的越界问题,其他自觉没啥大问题,

此处测试一下利用栈来“保护现场”:

首先,分配栈空间:

技术分享图片

将bx,cx的值分别设为1234H和5678H

技术分享图片

利用push和pop“保护现场”:

技术分享图片

可见,执行完之后,bx,cx的值未发生改变

技术分享图片

 

三、课后检测点3.2

<1>补全下面的程序,使其可以将10000H-10000FH中的8个字,逆序复制到20000H-2000FH中。

mov ax,1000H
mov ds,ax
________
________
________
push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]

思索一番,得出缺失的三行代码为:

mov bx,2000H
mov ss,ax
mov sp,0010H

 

<2>题目不变,将代码改为:

mov ax,2000H
mov ds,ax
________
________
________
pop [E]
pop [C]
pop [A]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]

如下:

mov ax,1000H
mov ss,ax
mov sp,0000H

此题只是考察如分配一个满栈和空栈,较为基础,故不作解释

 




以上是关于汇编语言第三章的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pygments 检测代码片段的编程语言

[vscode]--HTML代码片段(基础版,reactvuejquery)

vscode代码片段生成vue模板

VSCode 如何操作用户自定义代码片段(快捷键)

VsCode编辑器如何自定义代码片段

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段