摘要: 定义: 为了今后的课程深入,同时便于理解,约定两个符号。()、idata () 这个括号用法是这样 如:(ax)表示寄存器ax的内容、((ax)) 双括号,表示寄存器ax的内容表示一个内存地址,并且这个内存地址所指向的内存单元的数据。 idata表示常量,可代替任何数。如[idata] 表示内存第idata个单元的数据。【bx】 相当于[0]loop 循环指令,该指令与寄存器cx合并使用,cx用来... 阅读全文
posted @ 2010-07-09 08:50 你的影子 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 上一课讲了栈,现在开始写第一个程序吧。assume cs:testtest segment start:mov ax, 2 add ax,ax add ax,ax mov ax,4c00hint 21htest endsend startassume 是伪指令,用来和代码段建立一个连接,这个指令由编译器执行。cs:test cs是指向代码寄存器段地址,所以 assume cs:test 的意思就是... 阅读全文
posted @ 2010-07-08 09:23 你的影子 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 特点: FILO(first in Last Out) 先进后出原则 出栈入栈是按字作为基本单元的,就是一字出或入栈2个字节。 ss: 栈段地址sp:栈顶位置 ss:sp 永远指向栈顶 汇编指令: push 压栈pop 出栈 cpu执行顺序: push cpu将sp-2 再将数据压栈 pop cpu先取出数据然后将sp+2例: mov ax 1000H mov ss ax mov ax 0001h... 阅读全文
posted @ 2010-07-07 09:03 你的影子 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 段的开始地址必须是16位的倍数,偏移地址的取值范围是在0000H~FFFFH 之间,也就是<=64Kax,bx,cx,dx寄存器又可分别折开成两个独立的寄存器使用,高位和低位 ax折 ah 高位 al 低位 bx 折 bh bl cx ch cldx dh dl1.段寄存器是不能直接赋值的,必须要通过通用寄存器中转赋值。2.cs ip寄存器必须通过jmp来赋值3.汇编指令 MOV ax 1... 阅读全文
posted @ 2010-07-07 08:34 你的影子 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 接着上面的,补充一下 16进制的一位对应二进制的4位,也就指一次性传输一位16进数需要四根数据线或地址线,因此,16位地址总线一次最多只能传四位16进制的数。如果地址总线是20位,那意味着一次可传5位16进制数。cpu也就需要通过加法器来把两个16进制数计算成表示成20位。这时大家有问题,是什么把段地址和偏移地址传给cpu的呢?这也是当初我的困惑。是这样的,由于cpu有许多寄存器,其中有两个寄存器... 阅读全文
posted @ 2010-07-06 11:41 你的影子 阅读(97) 评论(0) 推荐(1) 编辑
摘要: 先讲讲计算机单位概念吧:计算机最小单位是bit,也就是一个二进制位(只有0或1的表示),相当于一根导线,电有正负级,正级为0 负级为 1. 但在内存单元中,我们是按字(byte)节来形容一个单元的,也就是说一个内存单元表示8个bit的连续空间. 8bit=1byte,通常也会这样标记 8b=1B byte用大写B表示。 1024byte=1KB 1024KB=1MB 1024MB=1GB 1024... 阅读全文
posted @ 2010-07-06 10:14 你的影子 阅读(184) 评论(0) 推荐(0) 编辑