汇编随笔2
源程序框架
assume cs:codesg,ds:data,ss:stack
data segment
data ends
stack segment
stack ends
code segment
start:
mov ax,4c00H
int 21H
code ends
end start
源程序实现过程:edit编辑保存a1.asm->编译masm a1.asm;->连接link a1.obj;
查看:type a1.asm
debug:debug a1.exe
[bx]表示一个内存单元,它的偏移地址在bx中;si,di功能相近;在【…】中使用bp,指令中没有显性地给出段地址,默认在ss中
inc bx ;bx 中的内容加一
/ *movax,2
mov cx,11
s: add ax,ax
loop s*/
s为标号,标志一个地址
CPU在执行loop s时,要执行两步操作①cx=cx-1②判断cx,若为零执行下一条指令,不为零则转至标号s处执行
段前缀:用于显式地指明内存单元的段地址;ds: cs: ss: es:
offset:取得标号的偏移地址
db:字节型
dw:字型
dd:双字型
dup:用于数据的重复;db 3 dup(0,1,2)=db 0,1,2,0,1,2,0,1,2.
and指令:逻辑与指令,按位进行与运算
or指令:逻辑或指令,按位进行或运算
div8(16)
被除数->(dx:)ax
除数->reg8/mem8(16)
商:al(ax)
余:ah(dx)
ret:pop ip
retf:pop ip, pop cs
标志寄存器:
ZF:结果为0,ZF=1,结果不为0,ZF=0
PF:结果的所有bit位1的个数为偶pf=1,为奇pf=0
SF:结果为负sf=1,非负sf=0
CF:进行无符号运算时,记录运算结果的最高有效位向更高位的进位或者借位----------adc:adc ax,bx:(ax)=(ax)+(bx)+cf
OF:发生溢出of=1,没有溢出of=0