直接尋址方式是指在指令中操作數(shù)直接以單元地址的形式給出,也就是在這種尋址方式中,操作數(shù)項給出的是參加運算的操作數(shù)的地址,而不是操作數(shù)。
例如:MOV A,30H
這條指令中操作數(shù)就在30H單元中,也就是30H是操作數(shù)的地址,并非操作數(shù)。
在80C51單片機中,直接地址只能用來表示特殊功能寄存器、內(nèi)部數(shù)據(jù)存儲器以及位地址空間,具體的說就是:
1、內(nèi)部數(shù)據(jù)存儲器RAM低128單元。在指令中是以直接單元地址形式給出。
我們知道低128單元的地址是00H-7FH。在指令中直接以單元地址形式給出這句話的意思就是這0-127共128位的任何一位,例如0位是以00H這個單元地址形式給出、1位就是以01H單元地址給出、127位就是以7FH形式給出。
2、位尋址區(qū)。20H-2FH地址單元。
3、特殊功能寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號形式給出。例如下面我們分析的一條指令MOV IE,#85H前面的學(xué)習(xí)我們已知道,中斷允許寄存器IE的地址是80H,那么也就是這條指令可以以MOV IE,#85H的形式表述,也可以MOV 80H,#85H的形式表述。
關(guān)于數(shù)據(jù)存儲器RAM的內(nèi)部情況,請查看我們課程的第十二課。
直接尋址是唯一能訪問特殊功能寄存器的尋址方式!
大家來分析下面幾條指令:
MOV 65H,A ;將A的內(nèi)容送入內(nèi)部RAM的65H單元地址中
MOV A,direct ;將直接地址單元的內(nèi)容送入A中
MOV direct,direct;將直接地址單元的內(nèi)容送直接地址單元
MOV IE,#85H;將立即數(shù)85H送入中斷允許寄存器IE
前面我們已學(xué)過,數(shù)據(jù)前面加了“#”的,表示后面的數(shù)是立即數(shù)(如#85H,就表示85H就是一個立即數(shù)),數(shù)據(jù)前面沒有加“#”號的,就表示后面的是一個地址地址(如,MOV 65H,A這條指令的65H就是一個單元地址)。