1.汇编中对名字项要求比较灵活,不过不允许以数字开头
2.当程序顺序执行时,每取一条指令,IP指针增加的值有指令长度决定,且指向下一条指令的首地址
3.MOV指令有关:
1)不允许段寄存器间直接数据传送:mov ds,es ;非法
不允许向段寄存器传立即数:MOV DS,2000H ;非法
2)不允许储存单元间直接数据传送:mov [si],[di] ;非法
3)类型一致: mov ax,bl ;非法
mov [di],bl ;合法
4)不允许向CS中传值 MOV CS,AX ;非法
5)MOV CX,NUM1-NUM2 ;合法(有人说是因为offset num1-num2一定成立,为什么。。。)
MOV CX,NUM1+NUM2 ;非法。。。为什么啊啊
6)MOV [DX+DI],AL ;基址变址相关,有效地址EA=BX/BP+SI/DI
4.段内寻址时可提供偏移地址的寄存器:BX(基址寄存器),BP(堆栈指针),SI(源地址寄存器,与ds有关),DI(目的地址寄存器,与es有关)
5.END语句:标志源程序到此结束
6.将DX中内容除以2,用 SAR DX,1 却不能用div dx,2(为什么。。。?)
7.条件转移指令相关:
1)JZ/JE 利用ZF标志位,当结果为0时跳转,此时ZF=1
8.逻辑运算指令AND,OR,XOR,TEST指令,源操作数任意寻址方式,目的操作数只能是立即数之外的其他寻址方式,并且两操作数不能同时为存储器寻址方式;均设置CF=OF=0,根据结果设置SF,ZF,PF,对AF未定义
9.各标志位含义:CF:进位标志,PF:奇偶标志(PF=1表示结果中低8位含1的个数为偶数),AF(调整标志),ZF(0标志),SF(符号标志),OF(溢出标志)
10.INC DA[BX]时要用到段寄存器DS
11.INC与DEC针对字节,所以INC BYTE PTR [BX] 合法,INC [BX] 不合法
12.CPU发出的访问存储器的地址是物理地址
13.是计算机执行某种操作的命令是指令
14.DEBUG相关:
1)d (dump)显示主存单元内容
2)e (enter)修改主存内容
3)f(fill)对一个主存区域内填写内容
r 显示和修改寄存器
a 汇编
u 反汇编
g 运行
t 单步执行
p 不需要调试子程序、中断服务程序、循环体时用p,类似t
q 推出debug返回dos
15.堆栈以字为单位压入弹出,压入堆栈时,地址减小,sp-2,弹出时sp+2
16.生成exe后,用DEBUG 加载程序后,用R命令查看知道DS=075A,所以程序的开始地址是076A。
17.运算器的主要功能是进行逻辑运算和算术运算
18.时钟周期<机器周期<指令周期
19. ?$号不能单独作为标号