YiMiTuMi

使我进步的不是谦虚,而是别人羡慕我时我的那份骄傲!

(十二)将数据、代码、栈放入不同的段--汇编笔记

汇编语言

将数据、代码、栈放入不同的段 将数据、代码、栈放入同一个段中会出现的问题:  1)把它们放到一个段中使程序显得混乱  2)如果数据、栈和代码需要的空间超过64KB,就不能放在一个段中。(一的段的容量不能大于64KB,是8086模式的限制,并不是所有的处理器都这样) 例: assume cs:code, ds:data, ss:stack //代码段 数据段 栈段 data seg...

(十一)在代码段中使用栈--汇编笔记

汇编语言

在代码段中使用栈 利用栈,将程序中定义的数据逆序存放 assume cs:codesg codesg segment dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H //定义16个字的内存空间来存放 dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //这段空间用来当作栈来使用 start: mov ...

(九)loop和[bx]连用、段前缀的使用--汇编笔记

汇编语言

loop和[bx]连用 计算 FFFF:0 ~ FFFF:B 单元中数据的和  1)运算结果不会超出dx的存储范围:dx 存65535,即12 * 255 < 65535  2)不能将 FFFF:0 ~ FFFF:B 的数据直接累加到 dx:FFFF:0 ~ FFFF:B 中是内存单元是8位,不能累加到16位中。  3)不能用累加 dl 和 dh=0 实现: dl有可能会产生进...

(六)DOS和command.com和汇编过程--汇编笔记

汇编语言

DOS和command.com 操作系统是由多个功能模块组成的庞大、复杂的软件系统。任何通用的操作系统,都要提供一个称为shell(外壳)的程序,用户(操作人员)使用这个程序来操作计算机系统进行工作。 DOS中有一个程序command.com,这个程序在DOS中称为命令解释器,也就是DOS系统的shell。 DOS启动时,先完成其他重要的初始化工作,然后运行command.com,co...

(八)Debug和汇编编译器masm对指令的不同处理--汇编笔记

汇编语言

Debug和汇编编译器masm对指令的不同处理 idata表示一个常量。 debug中编译的是程序(汇编指令)而不是源程序(汇编指令 + 伪指令)。 Debug和编译器 masm 对形如 mov ax, [idata] ,解释是不同的,debug 将它解释为“[idata]是一个内存单元,idata为内存单元的偏移地址”,而编译器将其解释为“idata,单纯的一个常量数,不代表地址。”...

(七)[bx]、lea 和 Loop --汇编笔记

汇编语言

[BX] mov ax, [bx] 功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中。即(ax)= ((ds)*16 + (bx))。 mov [bx], ax 功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将ax处的数据送入SA:EA中。即((ds)*16 + (bx)) =(ax)。 [bx] 是一...

(五)assume、ends、segment、end、标号和返回--汇编笔记

汇编语言

一个源程序从写出到执行的过程  1)编写汇编程序。  2)对源程序进行编译链接,生成可执行文件。  3)执行可执行文件中的程序。 assume cs:codesg //假设 codesg是个代码段,所以将codesg和CPU的段寄存器cs联系起来。 codesg segment //segment 伪指令:定义一个段,段的名称为codesg,这个段从此开始 mov ax, 0...

(四)栈、ss、sp、posh 和 pop 指令--汇编笔记

汇编语言

栈 栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入这个空间的数据,最先出去。 CPU提供的栈机制 PUSH(入栈) push ax 将寄存器ax中的数据送入栈中 pop(出栈) pop ax 从栈顶取出数据送入ax 8086CPU的入栈和出栈是以字为单位进行的。(即2个连续地址的内存单元)高地址单元存放高8位,低地址单元存放低8位。(一般下面为大) 段寄存器...

(三)DS段寄存器 和 [address]--汇编笔记

汇编语言

内存中字的存储 CPU中,用16位寄存器来存储一个字。一个内存单元存放一个字节。 1个字 = 2个字节 1个字节 = 8位 一个内存单元一个字节,一共8位 一个字 = 2个内存单元,一共16位 字单元:即存放一个字型数据(16位)的内存单元,由两个连续的内存单元组成。 DS 和 [address] DS寄存器,通常用来存放要访问数据的段地址。(数据段地址寄存器) mov指令...

(二)CS(段寄存器)和 IP(指令指针寄存器)--汇编笔记

汇编语言

段的概念 内存并没有分段,段的划分来自于CPU。 段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。 CPU可以用不同的段地址和偏移地址形成同一个物理地址。 CS(段寄存器)和IP(指令指针寄存器) CS:代码段寄存器 IP:指令指针寄存器 在8086PC中,任意时刻设CS中的...