匯編語言ret返回到哪里 匯編語言中proc far是什么意思?
匯編語言中proc far是什么意思?你說的是這樣一個程序框架:Main proc far push DS XOR ax,ax push ax。。。重新連接主端。這是DOS下最原始的exe程序框架。當(dāng)
匯編語言中proc far是什么意思?
你說的是這樣一個程序框架:Main proc far push DS XOR ax,ax push ax。。。重新連接主端。這是DOS下最原始的exe程序框架。當(dāng)時DOS的版本很低,DOS沒有提供4CH DOS函數(shù)調(diào)用,程序的結(jié)尾只能用int 20h來完成。int 20h結(jié)束程序時,CS指向程序段前綴(PSP)所在的段地址。因此,程序需要將主程序定義為proc far,它將RET指令組裝為retf。代碼的前三條指令是將PSP段地址放在堆棧上,然后將0放在堆棧上。這樣,在執(zhí)行RET時,在PSP段的偏移地址處執(zhí)行int 20h指令,以確保正確返回DOS。后來,DOS的一個稍高的版本有第4CH個函數(shù)調(diào)用,所以不需要這個程序框架。教科書中的許多程序都是復(fù)制的,所以人們經(jīng)常看到這種過時的代碼。
匯編語言main proc far是什么意思?
遠近是子程序調(diào)用的參數(shù)。如果子程序和調(diào)用程序在同一段中,子程序參數(shù)設(shè)置為near。如果子程序和調(diào)用程序不在同一段中,則子程序參數(shù)設(shè)置為far。在這里,主程序被定義為far,因為系統(tǒng)將主程序視為DOS調(diào)用的子例程。DOS內(nèi)核和主程序不在同一段地址,所以主程序叫far程序參數(shù)應(yīng)該用far
你說的大概就是這樣一個程序框架:mainprocfarpush dsxorax,axpushax。。。retmaintendpendmin。這是DOS下最原始的exe程序框架。當(dāng)時DOS的版本很低,DOS沒有提供4CH DOS函數(shù)調(diào)用,程序的結(jié)尾只能用int20h來完成。當(dāng)int20h結(jié)束程序時,CS指向程序段前綴(PSP)所在的段地址。因此,程序需要將主程序定義為procfar,將RET指令組裝為retf。代碼的前三條指令是將PSP段地址放在堆棧上,然后將0放在堆棧上。這樣,在執(zhí)行RET時,在PSP段的偏移地址處執(zhí)行一條int20h指令,以確保正確返回DOS。后來,DOS的一個稍高的版本有第4CH個函數(shù)調(diào)用,所以不需要這個程序框架。教科書中的許多程序都是復(fù)制的,所以人們經(jīng)??吹竭@種過時的代碼。