assume用法及意思 匯編語言關(guān)于assume的用法?
匯編語言關(guān)于assume的用法?assume的功能是將段名稱與段寄存器相關(guān)聯(lián)。如果在數(shù)據(jù)節(jié)中定義變量名,例如:x DB 0 1,并且需要在代碼中直接使用此變量名,例如:mov Al,x 1,則匯編程序
匯編語言關(guān)于assume的用法?
assume的功能是將段名稱與段寄存器相關(guān)聯(lián)。
如果在數(shù)據(jù)節(jié)中定義變量名,例如:
x DB 0 1
,并且需要在代碼中直接使用此變量名,例如:
mov Al,x 1
,則匯編程序在匯編時(shí)將報(bào)告錯誤。
因?yàn)樵贛OV指令中遇到變量名x時(shí),匯編程序不知道將使用哪個(gè)段寄存器作為段地址。
因此:
如果要直接使用變量名訪問或使用語句標(biāo)簽(例如示例中的標(biāo)簽start),則必須將這些變量或標(biāo)簽所在的段的段名稱與assume偽指令中的段寄存器名稱相關(guān)聯(lián),否則將發(fā)生錯誤。
如果不在段中使用變量名,則不能將段名與寄存器關(guān)聯(lián)。
如果在訪問變量時(shí)指定段交叉前綴,則不需要關(guān)聯(lián)。例如,您可以使用MOV,Al,ds:X來訪問變量X。
匯編中的ASSUME是什么意思?
我們需要使用“假定”將一個(gè)段與一個(gè)段寄存器相對應(yīng)的原因是DOS找到的空閑內(nèi)存的地址不是固定的,因此我們在任何時(shí)候都找不到空閑的地址。因此DOS需要一個(gè)可重定位的程序,此時(shí)定位的方法是設(shè)置段寄存器的值,使程序在可分配(空閑)內(nèi)存中可用。它需要知道在重新定位段以正確執(zhí)行時(shí)需要修改哪個(gè)段寄存器值。假設(shè)在將代碼重新定位到編譯器時(shí)提供要修改的段和寄存器之間的關(guān)系,并且編譯器將此信息寫入二進(jìn)制文件。例如,DOS下的EXE程序記錄在文件頭中。
匯編中assume的作用?
要編寫匯編語言程序,我們需要使用編譯軟件來編譯。
假設(shè)是通知編譯器段寄存器和定義段之間的關(guān)系。編譯軟件,比較遲鈍,你隨便寫一個(gè)對應(yīng)關(guān)系,就分不清真假了。程序的正確與否取決于程序的動態(tài)性。。。這個(gè)CPU指令與猜測無關(guān)。你不必去想。