摘要: 1.Debug和MASN中读取内存单元的区别:Debug中:mov ax,0ffffhmov ds,axmov al,[1]MASN中:mov ax,0ffffhmov ds,axmov bx,1mov al,[bx]或者mov ax,0ffffhmov ds,axmov al,ds:[1]2.Loop指令assume cs:codecode sementmov ax,2mov cx,3s: add ax,axloop scode ednsend 其中s为loop的标号,代表一个地址,它标识了一个地址,该表示可以随意命名,要与loop XX 相同即可;cx为循环次数,当执行loop s时,cx 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 1.assume cs:code,ds:data,ss:stackdata segmentds 0123h,1234h,2345h,3456h,4567h,5678h,6789h,789Ahdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,axmov sp,20h;设置ss:sp指向stack的栈顶mov ax,datamov ds,ax;ds指向data段mov bx,0;ds:bx指向打他段中的第一个单元mov cx,8s: push [bx]add bx,2loo 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 1.and指令:逻辑与指令,按位进行与运算。与1不变,与0变0,可将对象相应位设为0.2.or指令:逻辑或指令,按为进行或运算。或1变1,或0变0,可将对象位设为1.3.[BX+idata]的几种表现形式:(1)mov ax,[200+bx](2)mov ax,200[bx](3)mov ax,[bx].2004.[BX+idata]的数组处理案例assume CS:codesg,DS:datasgdatasg SEGMENTDB 'BaSiC'DB 'MinIX'datasg ENDScodesg SEGMENTstart:MOV AX,datasgMOV D 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1.两个基本问题:(1)处理的数据在什么地方?(2)处理的数据有多长?2.寄存器集合(Reg):ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si; 段寄存器集合(sReg):cs,ds,ss,es;3.几种错误的指令:(1)mov ax,[cx](2)mov ax,[dx](3)mov ax,[dx](4)mov ax,[ds](5)mov ax,[bp+bx](6)mov ax,[si+di]4.处理可分为:读取、运算、写入,在及其指令这一层来讲,它并不关心所要处理的数据是多少,而关心指令执行前的那一刻,它将要处理数据所在的位置。5.立即数:对于 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 一个典型的CPU使用运算器、控制器、寄存器等组成的。8086CPU有14个寄存器,AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,其中有8个是通用寄存器。8086CPU所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX通常用来存放一般性数据被成为通用寄存器。8086CPU为了兼容上一代的8位CPU,AX、BX、CX、DX这四个可以分为两个独立的8位寄存器。比如AH(高位)和AL(低位)。1字=2字节=16位(1Word=2Byte=16bit)。CPU访问内存时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(1045) 评论(0) 推荐(0) 编辑
摘要: CPU中,用16位来存储一个字。高8位存放高位字节,低8位存放低位字节。内存存储中,内存单元是字节单元(1单元=1字节),则一个字要用两个地址连续的内存单元存放。内存存储中,高位字节,和低位字节是相对的,指令指向的是低位字节。字单元,即存放一个字型数据(16位=2字节)的内存单元,由两个地址连续的内存单元组成。8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。MOV指令的几种种功能:将数据直接送入寄存器 mov ax,1000H将一个寄存器中的内容送入另一个寄存器 mov ax,bx;mov ds,ax将一个内存单元中的内容送入寄存器 mov ax,[...]将寄存器中的内容送 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 1.一个最简单的汇编语言源程序:assume cs:codesgcodesg segmentmov ax,0123Hmov bx,0456Hadd ax,bxadd ax,axmov ax,4c00Hint 21Hcodesg endsend2.assume是“假设”的意思,它是将有特定用途的段和相关段寄存器关联起来的。3.sgment和ends是一对成对使用的伪指令,也是一边必须用到的伪指令,xxxx segment用来声明该段的名称,中间则是存放汇编指令。4.end是一个汇编程序的结束标记。5.一个有意义的汇编程序必须有一个代码段。6.一个程序结束后,会将CPU的控制权交还给使他运行的程序 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 1.汇编语言有三类指令组成汇编指令:有对应机器码伪指令:没有对应机器码,有编译器执行其他符号:如+,-,*,/,由编译器识别汇编语言的核心是汇编指令,它决定了汇编语言的特性。2.一个内存单元=1Byte=8bit。3.CPU要进行读写(外部通讯)需要进行以下三个交互地址总线数据总线控制总线4.CPU是通过地址总线来指定存储单元的。5.一个CPU有N根地址总线,则可以说这个CPU的地址总线宽度为N,这样的CPU可以寻找到2的N方个内存单元。6.CPU与内存或其他部件之间的数据传送是通过数据总线来进行的。7.数据总线决定了CPU与外界数据传输的速度。8.8根数据总线可以传送一个8位二进制数据(即一 阅读全文
posted @ 2012-12-10 14:56 烧点饭 阅读(264) 评论(0) 推荐(0) 编辑