知识点总结
(鉴于这四个章节的内容都具有一定的关联性,便安排在一起总结了,并且已经学习过一段时间了,就当做复习吧)
1.可用作间接寻址的寄存器有 bx, si, di, bp
(bx 和 bp 都分别只能与 si 和 di 搭配,idata为常量)例如:
mov ax, [bx + si + idata] mov ax, [bx + di + idata] mov ax, [bp + si + idata] mov ax, [bp + di + idata]
- si 和 di不能够分成两个8位寄存器使用
2.指令的不同写法
mov ax, [bx + si + idata] mov ax, idata [bx] [si] ;此写法可类比高级语言(C/java等)中二维数组的常见写法 mov ax, [bx] idata [si] mov ax, [bx] [si] . idata
3.在dos下,编写程序时可用的安全空间:
0:200 ~ 0:2FF
4.and 和 or 指令
and指令:按位进行与运算
例:mov al, 'a'
and al, 11011111B
可将小写字母a转换为大写字母A
or指令 : 按位进行或运算
例:
mov al, 'A'
or al, 00100000B
可将大写字母A转换为小写字母a
5.div指令
除数:有8位和16位两种,在一个reg或内存单元中
被除数:默认放在AX或DX和AX中,若除数为8位,被除数则为16位,默认在AX中存放;若除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位, AX存放低16位
结果:如果除数为8位,则AL存储出发操作的商,AH存储出发操作的余数,如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数
例如:
div word ptr es:[0] (除数为16位)
含义为: ax= [(dx) * 10000H + (ax)] / (es) * 16 + 0)的商
(dx)= [(dx) * 10000H + (ax)} / (es) * 16 + 0) 的余数
6.dup指令:用来进行数据的重复定义
例:
db 3 dup ('abc', 'ABC')
等同于:
db 'abcABCabcABCabcABC'