汇编
长着翅膀的乌龟
it从业者,爱好者。
展开
-
汇编学习笔记五
数据段的学习我们在一开始在debug中是使用a命令来进行编写代码的,这样是不安全的,我们使用a命令可以在任意的位置编写代码,然后使cs:ip指向这个地址,便可以执行我们所写的代码了,然后我们又是创建一个asm类型的文件,我们称之为源文件,然后通过编译和链接后生成exe的文件,然后在debug中进行运行的,使用这种方式运行的好处是,我们的内存空间时系统分配给程序的,是安全的。可以使用dw来定义字...原创 2019-08-07 12:26:06 · 271 阅读 · 0 评论 -
汇编学习笔记六
其他定位内存的方法内存在分配给每个段内存时,都会分配给10H的倍数个字节,这是为了使偏移地址从0开始。小结怎么在系统为我们分配的内存中安排数据和代码和栈我们前面说过定位内存的方法有mov al,ds:[0]mov al,ds:[bx]这两种方法事实上还有其他方法mov ax,d:[si]mov ax,ds:[bx+1]mov ax,ds:[si+1]mov ax,ds:[b...原创 2019-08-07 18:34:32 · 90 阅读 · 0 评论 -
汇编学习笔记七
div指令表示除数的意思指令格式div 寄存器div 内存单元这个指令后只有一个参数表示除数当除数是8位时ax默认被当做被除数,得到的结果也是存放在ax中的其中al存储运算得到的商,ah存储得到的余数下面是一个例子assume cs:code,ds:data,ss:stackdata segment db 4,3,4 db 'welcome to masm!' db...原创 2019-08-07 20:49:28 · 197 阅读 · 0 评论 -
汇编学习笔记三
数据段 代码段 栈段我们可以以在一段内存中存放数据 数据段 存放我们自己定义的数据我们可以在一段内存中存放指令 代码段 我们自己定义的指令我们可以将一段内存定义成栈空间 栈段 我们需要存放临时数据我们应该怎么让cpu按照我们的要求哪对于数据段 段地址->ds段地址寄存器 [0],[1]… 来访问内存单元对于代码段 我们可以修改cs和ip来指向我们定义的代码段...原创 2019-08-07 20:54:00 · 153 阅读 · 0 评论 -
汇编学习笔记四
使用偏移地址寄存器来访问内存单元我们通常使用访问内存单元的语句位 mov ax,ds:[0]我们也可以使用这样的形式访问内存单元 mov ax,ds:[bx]我们称bx位偏移地址寄存器,这里只能使用bx寄存器bx成为偏移地址寄存器inc指令表示将目标操作数加1assume cs:codecode segment mov ax,2000H mov ds,ax mov b...原创 2019-08-07 20:56:50 · 258 阅读 · 0 评论 -
汇编学习笔记二
指令的执行指令的长度是可以是多个字节cpu从cs:ip所指向的内存单元中读取指令,存放到指令缓存器中ip=ip+所读指令的长度,从而指向下一条指令执行指令缓存器的内容,回到下一个步骤这个顺序是很重要的,为什么要使用2和3的顺序哪,这是因为当我们调用一个函数时使用这种方式很好用我们可以得出结论,数据和指令是没有差别的,当使用读取cs:ip指向的地址,cpu便将其当成指令执行debug...原创 2019-08-07 20:58:20 · 151 阅读 · 0 评论 -
汇编语言基础
寄存器寄存器是处理器内部的高速缓冲区,用于暂时存放数据。寄存器的分类:透明寄存器:这类寄存器不需要程序员进行操作。可编程的寄存器:这是我们程序员需要学习的这类寄存器又分为通用寄存器和专用寄存器32位通用寄存器:eax ebx ecx edx edi esi ebp esp16位通用寄存器:ax bx cx dx di si bp sp8位通用寄存器:al ah bl bh cl ch...原创 2019-08-07 21:00:16 · 183 阅读 · 0 评论 -
汇编学习笔记九
转移指令原理:可以修改cs或ipjmp指令loop指令 和cx有关操作符 offset这个指令使用之前需要在一个指令前面定义一个标号,使用offset获取指令的偏移地址jmp指令跳转指令,jmp的后面可以跟一个标号,表示跳转到的位置assume cs:codecode segment mov ax,1 mov ax,1 jmp s mov ax,1...原创 2019-08-10 16:13:15 · 141 阅读 · 0 评论 -
汇编学习笔记八
实验七寻址方式在结构化数据访问中等的应用要求将data段中的数据按照如下格式写到table段中,并计算21年中的人均收入结果也按照下面的格式保存在table段中assume cs:code,ds:data,ss:stackdata segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983...原创 2019-08-08 10:17:00 · 117 阅读 · 0 评论 -
汇编的数据处理指令
mov指令这个指令是最常用的数据转移指令,表示将原操作数转移到目的操作数,指令的格式为。mov 目的操作数,原操作数mov reg/mem,immmov reg/mem/seg,regmov reg/seg,mem需要注意的是不能将主存储器的内容传送到主存储器中,不能将立即数直接传送到段寄存器中。数据传送.png下面举一些例子mov ax,bx...原创 2019-08-04 09:35:00 · 770 阅读 · 0 评论 -
汇编的寻址方式
寻址的对象程序是指令的集合,指令包括操作码和操作数。寻址可分为指令的寻址即表示下一条指令的位置,还有便是数据的寻址即操作数的寻址,只有找到这个操作数才能对数据进行操作。下面图表示数据寻址的几种方式数据寻址总结.png数据寻址.png我们可以看到数据的寻址可以分为以下几种立即数寻址:表示数据直接在指令中,这种方式的寻址是非常快的 寄存器寻址:表示数据存储在...原创 2019-08-03 21:17:00 · 2577 阅读 · 0 评论 -
汇编数据的表示
常量常量是指在汇编阶段便已经确定的值,这个值是在指令中的不在存储器中,而变量实在程序运行中才能确定这个变量的值。汇编语言中的常量的表达形式常数:直接给出数 字符和字符串:ascii字符 符号常量:用标识符代替数值 数值表达式:经运算得到的数值,每项都要是常量使用常数表示常量常数可以有以下几种形式使用二进制表示:使用二进制表示时后面需要带上单位B eg:01110001B...原创 2019-08-03 14:16:00 · 877 阅读 · 0 评论 -
汇编程序的格式
指令程序是指令的集合,我们说过程序的运行实际上便是取指执行,表示从内存中取出指令,然后执行指令。指令通常由操作码和操作数组成的,操作码表示执行的动作,操作数表示操作的对象,eg:mov ax,3这个指令是要给传送指令,表示将3传送到ax这个寄存器中,mov便是操作码,ax和3表示操作数。指令的格式.png汇编语言中的语句可以分为执行性语句和说明性语句下面我们便举...原创 2019-08-02 10:16:00 · 2475 阅读 · 0 评论 -
汇编语言学习笔记一
基础知识安装软件dosbox debug.exe计算机语言是用来和计算机进行交流的。机器指令 是一串二进制数 来指导计算机的运行机器指令使用高低电平来进行表示汇编语言通过编译器解释成机器语言伪指令告诉编译器怎么翻译机器语言dosbox介绍内存编号 十六进制数字 汇编指令u指令我们看到的是机器指令和汇编指令d指令我们看到的是数据r可以查看寄存器的值q为退出因此接下来便是一个...原创 2019-08-07 21:04:23 · 232 阅读 · 0 评论