上周我的学习进度较快,看了很多的理论知识,没有进行太多的实践,所以先把理论知识进行一个总结,然后本周在将书中的实验进行实践。
1.定义多个段的方法:
(1)对于不同的段,要有不同的段名
(2)段短地址的引用:段名就相当于一个标号,它代表了段地址
(3)“代码段”、“数据段”、“栈段”完全是我们安排的
2.CPU到底如何处理我们定义的段中的内容,是当指令执行,当作数据访问,还是当作栈空间,完全是靠程序中具体的汇编指令,和汇编指令对CS:IP、SS:SP、DS等寄存器设置来决定的。
3.(1)“and”指令:逻辑与指令,按位进行与运算。
通过该指令可将操作对象的相应位设为0,其他位不变 (2)“or”指令:逻辑或指令,按为进行或运算。
通过该指令可将操作对象的相应位设为1,其他位不变
4.我们可以在汇编程序中,用‘……’的方式致命数据是以字符的形式给出的,编译器将把它们转化为相对应的ASCLL码。
5.可以用[idata]、[bx]、[bx+idata]、[bxsi]、[bx+idata+si]来表示一个内存单元。
6.一般来说,在需要暂存数据的时候,我们都应该使用栈。
7.寄存器只能以这4种组合出现:bx和si、bx和di、bp和si、bp和di
8.在机器指令中要指明,指令进行的是字操作还是字节操作。
(1)通过寄存器名指明要处理的数据的尺寸。(如:ax、al)
(2)在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。
9.push指令只对字进行操作
10.div是除法指令,使用div做除法的时候应注意以下问题:
(1)除数:有8位和16位两种,在一个reg或内存单元中
(2)被除数:默认存放在AX或DX和AX中,如果除数为8位,则被除数为16位,默认存放在AX中;如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
(3)结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。
11.db和dw分别定义字节型数据和字型数据,dd用来定义dword(double word双字型数据。