第三章
1.字:2Byte;字节:Byte
2.DS 地址段寄存器
mov bx, 1000
mov ds, bx
mov ax, [0]
3.ax,bx,cx,dx均为16bit,是一个字的长度(2Byte)
4.H为十六进制,B为二进制,D为十进制(一般省略)
5.DS寄存器只能用mov操作(add,sub均不行)
6.堆栈顶段寄存器SS,SP为栈帧指针。出栈后的数据只是赋值给通用寄存器,数据仍存在于内存中,下一次入栈操作将覆盖内存中的原数据。
7.8086CPU没有栈顶越界检测的寄存器
8.sub ax, ax为两个机器码,mov ax, 0为三个机器码
9.debug的T命令在执行修改SS的指令时,下一条指令也会被执行。
第四、五章
1.伪指令
XXX segment
XXX ends
以上一起组成一个段
end为汇编程序的结束标志
assume 假定程序中某个段和某个段寄存器相关联 例如:assume cs:codesg
2.程序和源程序的区别
3.程序返回
mov ax,4c00H
4.输出文件:目标文件,列表文件,交叉引用文件
5.P命令执行 int 21h
6.[bx]即将bx寄存器中的值作为偏移地址;()为寄存器中的内容,例如(ax)为ax寄存器中的内容;idata代指常量;
7.inc为加一指令
8.loop命令,循环次数放在cx寄存器中
9.汇编源程序中,数据不能以字母开头; g 0012 可以让程序立马运行至 CS:0012处;利用p 执行int 21H或者跳出loop循环。
10.汇编源程序中若要访问内存地址,必须经过赋值给寄存器在用[]包装,即:
mov bx, 0012
mov ax,[bx]
或者
mov bx,ds:[0012] 显示指明该值为内存地址否则将被视为常量0012h
11.段前缀,显式指明段寄存器的方式