汇编第七、八章知识点
第七章,第八章知识点
1. and命令:逻辑与指令,按位进行与运算
通过该指令可将操作对象的相应位设为0,其他位不变
(原来为1或0则与1相与后还是原数;原来为1或0则与0相与后肯定为0→实现特定位置0)
2. or命令:逻辑或命令,按位进行或运算
通过该指令可将操作对象的相应位设为1,其他位不变
(原来为1或0则与1相或后肯定为1;原来为1或0与0相或后为原数→实现特定位置1)
3.在汇编程序中,用‘……’的方式指明数据是以字符的形式给出的,编译器将它们转化为相应的ASCII码
4.大小写转换的问题
方法一:利用ASCII码值进行转换
需要判断是大写字母还是小写字母,利用现在所学的指令无法判断(以后会学的)
方法二:根据大小写字母二进制之间的规律,利用and或or指令进行改变大小写字母
5.更为灵活的方式来指明内存单元[bx+idata],它的偏移地址为
(bx)+idata
几种常用的形式:
(1)mov ax,[200+bx]
(2)mov ax,200[bx]
(3)mov ax,[bx].200
6. SI和DI是8086CPU中和BX功能相近的寄存器,SI和DI不能够分成两个8位寄存器来使用
7.除了用[bx]或[bx+idata]或[si]或[si+idata]或[di]或[di+idata]的方式,还可以用更灵活的方式[bx+si]和[bx+di]和[bx][si]和[bx][di]
8.更更灵活的方式[bx+si+idata]和[bx+di+idata]
几个常用的形式:
mov ax,[bx+200+si]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200
9.嵌套循环时,外层循环应该保存起来
方法一:用一个寄存器
方法二:用一个内存单元
方法三:用栈(寄存器的数量有限,内存单元比较麻烦,所以更好的方法就是用栈)
做的小实验
1. bx,si,di,bp都可以表示内存偏移地址
使用bx,si,di默认段地址在ds中
使用bp表示偏移地址时,默认段地址在ss中
2.mov [0],3不确定是字单元,字节单元还是双字单元(与另一个操作数有关)→ptr属性运算符 mov byte ptr[0],3(表示当作字节单元)
类似的有word ptr字单元,dword ptr 双字单元
byte ptr既可用作常数,也可用作内存单元操作数
→mov byte ptr [0],3=mov [0],byte ptr 3
3.伪指令 db,dw,dd
操作符 dup重复定义 e.g. db 8 dup(0)指定值为0
db 8 dup()未指定值
db 3 dup(1,2,3)=db 1,2,3,1,2,3,1,2,3
4.无符号除法指令div(2个规则)
5.Debug中默认为十六进制(这个我总忘)
6.无符号乘法指令mul (2个规则)
我先写个7,8章知识点总结,一会再做个思维导图......
今天在图书馆学习的时候,对面是个好看的小姐姐,开心(我感觉我都快把随笔写成日记了)