汇编语言五至八章总结

时间:2022-02-01 04:54:19

知识点总结

(鉴于这四个章节的内容都具有一定的关联性,便安排在一起总结了,并且已经学习过一段时间了,就当做复习吧)

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'