?? bcda.lst
字號:
頁 1
11-13-03
11:24:10
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
mend_data_bytes data 40h ; 要修改的字節數
ten_yuan_led data 41h
yuan_led data 42h
jiao_led data 43h
money_high data 44h
money_low data 45h
crc_data1 data 46h
crc_data2 data 47h
dec_unit1 data 48h
dec_unit2 data 49h
warning1 data 4ah
warning2 data 4bh
money_high_bak data 50h
money_data_bak data 51h
;---------------
sign data 20h
lack_of_money bit 00h
no_money bit 01h
org 0100h
0100 753001 start: mov 30h,#01h
0103 753102 mov 31h,#02h
0106 753203 mov 32h,#03h
0109 753304 mov 33h,#04h
010C 753405 mov 34h,#05h
010F 753506 mov 35h,#06h
0112 753607 mov 36h,#07h
0115 753708 mov 37h,#08h
0118 753809 mov 38h,#09h
011B 753901 mov 39h,#01h
011E 753A01 mov 3ah,#01h
0121 753B01 mov 3bh,#01h
0124 753C01 mov 3ch,#01h
0127 753D0A mov 3dh,#0ah
012A 7830 mov r0,#30h
012C 7932 mov r1,#32h
012E 7F02 mov r7,#2
0130 7E06 mov r6,#6
0132 3198 add_lop: acall bcda
0134 09 inc r1
0135 09 inc r1
0136 DEFA djnz r6,add_lop
0138 80FE sjmp $
;-------------------------------------------------
; name: mend_data
; func: 進行扣費及LED碼變換
F:\HJC\TRY\BCDA\BCDA.ASM
頁 2
11-13-03
11:24:10
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
; calls: bcdb(多字節BCD碼減法)
; InPara: money_high, money_high_bak, mend_data_bytes
; OutPara: ten_yuan_led, yuan_led , jiao_led
; usage register: A, r0, r1, r2, r3, r7,psw
;-------------------------------------------------
013A 7844 mend_data: mov r0,#money_high
013C 7950 mov r1,#money_high_bak
013E 7A02 mov r2,#2
0140 E6 mend_data_bak1: mov a,@r0
0141 F7 mov @r1,a
0142 08 inc r0
0143 09 inc r1
0144 DAFA djnz r2,mend_data_bak1
0146 7850 mov r0,#money_high_bak ;被減數的地址,
0148 794A mov r1,#warning1 ;減數的地址
014A AF40 mov r7,mend_data_bytes
014C 1201A9 lcall bcdb ;判斷金額是否小于報警金額
014F 5002 jnc mend_data_dec ;
0151 D200 setb lack_of_money ;小于則置缺錢標志位
0153 7844 mend_data_dec: mov r0,#money_high
0155 7950 mov r1,#money_high_bak
0157 7A02 mov r2,#2
0159 E6 mend_data_bak2: mov a,@r0
015A F7 mov @r1,a
015B 08 inc r0
015C 09 inc r1
015D DAFA djnz r2,mend_data_bak2
015F 7850 mov r0,#money_high_bak ;被減數的地址,
0161 7948 mov r1,#dec_unit1 ;減數的地址
0163 AF40 mov r7,mend_data_bytes
0165 1201A9 lcall bcdb ;開始扣費
0168 5004 jnc mend_data_save ;判斷金額是否小于扣費單位
016A D201 setb no_money ;小于則置無錢標志位
016C 800C sjmp mend_data_div
016E 7844 mend_data_save: mov r0,#money_high ;把修改后的金額保存在待寫進IC卡的單元
0170 7950 mov r1,#money_high_bak
0172 7A02 mov r2,#2
0174 E7 mend_data_save1:mov a,@r1
0175 F6 mov @r0,a
0176 08 inc r0
0177 09 inc r1
0178 DAFA djnz r2,mend_data_save1
; 把金額分離成三字節BCD 碼,
017A 854441 mend_data_div: mov ten_yuan_led,money_high
017D E545 mov a,money_low
017F 54F0 anl a,#0f0h
0181 C4 swap a
0182 F542 mov yuan_led,a
F:\HJC\TRY\BCDA\BCDA.ASM
頁 3
11-13-03
11:24:10
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
0184 E545 mov a,money_low
0186 540F anl a,#0fh
0188 F543 mov jiao_led,a
;再轉換成LED碼
018A 7A03 mov r2,#3
018C 9001D6 mov dptr,#led_tab
018F 7841 mov r0,#ten_yuan_led
0191 E6 mend_data_led: mov a,@r0
0192 93 movc a,@a+dptr
0193 F6 mov @r0,a
0194 08 inc r0
0195 DAFA djnz r2,mend_data_led
0197 22 ret
mend_data_ret:
;--------------------------------------
; name: bcda
; func: 多字節bcd 碼加法
; usage register: r0, r1, r2, r7 ,C
; r7: 相加的字節數, r0:被加數的地址, r1:加數的地址
; C: 進位
;-------------------------------------
0198 EF bcda: mov a,r7
0199 FA mov r2,a
019A 28 add a,r0
019B F8 mov r0,a
019C EA mov a,r2
019D 29 add a,r1
019E F9 mov r1,a
019F C3 clr c
01A0 18 bcd1: dec r0
01A1 19 dec r1
01A2 E6 mov a,@r0
01A3 37 addc a,@r1
01A4 D4 da a
01A5 F6 mov @r0,a
01A6 DAF8 djnz r2,bcd1
01A8 22 ret
;--------------------------------------
; name: bcdb
; func: 多字節bcd 碼減法
; usage register: A, r0, r1, r2, r3, r7,psw
; r7: 相減的字節數, r0:被減數的地址, r1:減數的地址
; c:借位
;-------------------------------------
01A9 1201B8 bcdb: lcall neg1
01AC 120198 lcall bcda
01AF B3 cpl c
F:\HJC\TRY\BCDA\BCDA.ASM
頁 4
11-13-03
11:24:10
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
01B0 92D5 mov f0,c
01B2 1201B8 lcall neg1
01B5 A2D5 mov c,f0
01B7 22 ret
01B8 E8 neg1: mov a,r0
01B9 C9 xch a,r1
01BA C8 xch a,r0
01BB 1201C2 lcall neg
01BE E8 mov a,r0
01BF C9 xch a,r1
01C0 C8 xch a,r0
01C1 22 ret
;--------------------------------------
; name: neg
; func: 多字節bcd 碼取補
; usage register: r0, r2, r3, psw
; r7: 字節數, r0:操作數的地址,
;-------------------------------------
01C2 EF neg: mov a,r7
01C3 14 dec a
01C4 FA mov r2,a
01C5 E8 mov a,r0
01C6 FB mov r3,a
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -