随笔分类 - 汇编语言
摘要:除了汇编指令剩下的都是伪指令 伪指令是给编译器看的 ends是段的结束 end是程序的结束
阅读全文
摘要:通过编译器我们要多做一点事情,比如,如果直接写mov ax [0] 我们认为是将偏移地址为0,段地址在dx中保存的地址内存的值传给ax,但是他是把0传给了他 这就是编译器让我们必须要先把那个地址的值传给另一个寄存器,再传给ax 不能直接给ds寄存器赋值 “()”是我们为了简便描述而写的 inc:相当
阅读全文
摘要:单任务就是一次只能执行一个任务,比如看电影的时候不能聊QQ 但是windows是一个多任务的操作系统 写成那样的形式只是好分段,因为”SA 段地址:偏移地址“ 与 “SA:地址”是表示不一样的
阅读全文
摘要:因为cou里面的寄存器是十六位的,而地址单位是八位的,所以每次从寄存器往栈里面放值的时候都要花费两个内存单元 pop先把数据拿出来,再把SP-2,这个数据实际上还存在,只不过下一次是被覆盖 push和pop操作的空间都是在SP和SS指向的位置 代码(一段指令...)的段地址永远是从CS中获得,数据的
阅读全文
摘要:r:可以查看当前寄存器里面的值,还可以给寄存器赋值 输入t命令cpu直接执行cs与ip对应的那一条指令,不需要输入其他内容 计算2的三次方 左边是十六进制内容,右边是ascall值 一个内存地址存放一个字节==八位 一个字==两个字节 字节型数据是一个地址里面的数, 字型数据是两个地址里面的数,其中
阅读全文
摘要:e后面的 x:y就代表你往哪里写数据,因为内存是连续的,所以可以连续写,x是地址,y是偏移地址 六进制加减法,和十进制一样,就直接加,如果要进位就逢十六进一,减法也是借一位当十六来使用 当把某个地址的值给某个寄存器的时候就要考虑这个寄存器是多少位的,因为内存的一个地址是八位,如果寄存器是十六位的,那
阅读全文
摘要:4个十六进制的数就是一个字 这个地址线性逻辑上的线性,是cpu认为的,但是实际上并不是 4、5、就是传到内存中处理 我们纠结的是这个最终算出来的答案可能会有多种解,即x 与y 作用产生最终的答案,这个x和y不是唯一的 上面的数是段地址,下面的是偏移地址 cpu认为所有储存是线性的——只有一个段,而我
阅读全文
摘要:练习 答案: 代码段: cs:ip指定的cpu认为是指令
阅读全文
摘要:寄存器:就是当进行运算时肯定要先把数存起来,那么在cpu外,数是存放在内存和外存中的,但是在cou内部运算时,要通过寄存器来存储数以便让cpu中的运算器进行运算 cpu内部不仅只有寄存器还有缓冲器等一些存储器件 通用寄存器如果改变那么系统操作系统内部也要重写 以后电脑硬件不断升级,那么就会加一些寄存
阅读全文