汇编语言的一些知识点总结(二)
本次总结主要基于汇编语言实验三:汇编语言程序调试运行。
- org伪指令。
如:org 20h
它定义了下一条汇编语句的位置。
汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;若有ORG伪指令,编译器则把其后的指令代码放到ORG伪指令指定的偏移地址。两个ORG伪指令之间,除了指令代码,若有自由空间,则用0填充。 - offset指令和lea指令
offset指令相当于取得了标号的偏移地址,举个例子:
assume cs:codesg
codesg segment
start: mov ax,offset start
s: mov ax,offset s
codeseg ends
end start
👆在上述代码段中,使用了两次offset以获取标号的位置,分别为mov ax,offset start
,它等价于mov ax,offset 0
因start的地址偏移量为0;而另一句为mov ax,offset s
等价于mov ax,offset 3
因地址偏移量为3。
offset指令只能获取在编译时就已经知道的地址。
而lea指令是求源操作数的存储单元,其例子如下:SI=1000H , DS=5000H, (51000H)=1234H,执行指令 LEA BX , [SI]
后,BX=1000H,执行指令 MOV BX , [SI]后,BX=1234H。
- 汇编语言的各种跳转指令:
详见这篇文章:链接。 - 在汇编语言中判断奇偶:
可使用test指令搭配jnz指令。