?? c_asm01.asm
字號:
;ASM程序
public readbyte ; 函數定義為全局
public readword
public ?readbyte?byte ; 函數調用時的參數
public ?readword?byte ;
public mydata ; 在匯編代碼中定義數據
extrn code(t0int) ; 外部程序模塊,在C語言定義
extrn data(g_char) ; 內部RAM的全局變量
extrn data(g_int) ;
extrn data(counter) ;
extrn xdata(gx_char) ; 外部RAM的全局變量
extrn xdata(gx_int) ;
bytes segment data ; 定義數據段
proc segment code ; 定義代碼段
rseg bytes
?readbyte?byte:
?readword?byte:
ds 8 ; 參數預留空間
cseg at 000bh ; 定義絕對地址程序
LJMP int_t0 ; 定時中斷0
rseg proc
readbyte: ; 返回值 = 傳入值 + g_char + 1
mov a,?readbyte?byte ; 傳入的單字節數據
add a,g_char ; 加上全局變量
inc a ; 返回字節型數據的
; 值存在ACC中
ret
readword: ; 返回值 = 傳入值 + 1 + g_int + gx_int
mov b,?readword?byte ; 傳入的雙字節數據高位
mov a,?readword?byte+1 ; 傳入的雙字節數據低位
inc a ; 雙字節加1
cjne a,#00, rw_nn
inc b
rw_nn: ;
add a, g_int+1 ; 加上變量 g_int 低字節
xch a,b
addc a, g_int ; 加 g_int 高字節
mov r6,a
mov r7,b
mov dpl, #low(gx_int) ; gx_int的地址
mov dph, #high(gx_int) ;
movx a,@dptr ; 讀取 gx_int 的高字節
mov r5,a ; 暫存到R5
inc dptr
movx a, @dptr ; 讀取 gx_int 的低字節
add a,r7
mov r7,a ; 返回的雙字節數據低位
mov a,r5
addc a,r6
mov r6,a ; 返回的雙字節數據高位
ret
int_t0:
lcall t0int ; 調用C語言程序模塊
reti
cseg at 2000h
mydata:
db 1,2,3,4,5,6,7,8,9,0
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -