HT48R70A Instruction Set
HT48R70A Instruction Set
HT48R70A Instruction Set
Transform your PDFs into Flipbooks and boost your revenue!
Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.
<strong>HT48R70A</strong><br />
<strong>Instruction</strong> <strong>Set</strong><br />
Program Develop Flow<br />
<br />
<br />
<br />
Program.ASM<br />
<br />
Assembler<br />
<br />
Program.OBJ<br />
Linker<br />
<br />
program.tsk<br />
Code Generator<br />
Download to ICE<br />
Debug<br />
<br />
Program.OTP<br />
Handy Writer<br />
OTP IC
[ ] [ / ] [ ] [ ]<br />
EX: Delay: MOV A, 30 ; move value 30 to Accumulator<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
• <br />
– INCLUDE file-name or INCLUDE “file-name”<br />
– <br />
<br />
• <br />
file-name<br />
– END<br />
• <br />
(included file)<br />
– ORG expression<br />
• expression <br />
(location counter)<br />
<br />
expression <br />
• EX:<br />
ORG 000h<br />
JMP Start<br />
ORG 08h<br />
Start: …<br />
– name PROC v.s. name ENDP<br />
• <br />
• EX: Delay PROC<br />
MOV a, 20<br />
…<br />
Delay ENDP
SECTION<br />
: name SECTION ‘class’<br />
– Class SECTION<br />
CODE<br />
DATA<br />
– CODE SECTION<br />
ROM<br />
– DATA SECTION<br />
RAM<br />
DC<br />
[label:] DC expression1 [,expression2 [,...]]<br />
– <br />
(ROM) (<br />
code<br />
<br />
)<br />
• label<br />
expression1 expression2 <br />
<br />
• Ex<br />
ORG LASTPAGE<br />
table: DC 0128H, 025CH, 28H<br />
– <br />
last page<br />
0128H 025CH0028H <br />
DBITDBDWDUP<br />
[name] DB value1 [,value2 [,...]]<br />
[name] DW value1 [,value2 [,...]]<br />
[name] DBIT<br />
[name] DB repeated-count DUP()<br />
[name] DW repeated-count DUP()<br />
• <br />
(ROM or RAM)<br />
(DBIT)<br />
(DB)<br />
(DW)<br />
• name ( name)<br />
• value1… <br />
– <br />
value!<br />
value <br />
• DUP (BYTEWORD)<br />
MY_DATA .SECTION ‘DATA’<br />
BUF1 DB <br />
BUF2 DW <br />
FLAG1 DBIT<br />
ARRAY DB 20 DUP()<br />
MY_CODE .SECTION AT 0 ‘CODE’<br />
TAB_1 DW 1,2,4,8, 16, 32, 64, 128, 256<br />
TAB_2 DW ‘ABCDEFG’
LOWHIGH<br />
LOW expressionHIGH expression<br />
• expression (HIGH) (LOW)<br />
• EX<br />
MAX EQU 8822H<br />
HI_BYTE EQU HIGH MAX ; HI_BYTE = 88H<br />
LO_BYTE EQU LOW MAX ; LO_BYTE = 22H<br />
<br />
ADD A,[m]<br />
ADDM A,[m]<br />
ADD A,x<br />
ADC A,[m]<br />
SBC A,[m]<br />
SBCM A,[m]<br />
DAA [m]<br />
INCA [m]<br />
INC [m]<br />
DECA [m]<br />
DEC [m]<br />
<strong>Instruction</strong> <strong>Set</strong> --<br />
<br />
A<br />
1 Z,C,AC,OV<br />
A<br />
1 (1) Z,C,AC,OV<br />
A x<br />
A<br />
1 Z,C,AC,OV<br />
ADCM A,[m] A<br />
1 Z,C,AC,OV<br />
<br />
(1)<br />
SUB A,x A x 1 Z,C,AC,OV<br />
SUB A,[m] A<br />
1 Z,C,AC,OV<br />
SUBM A,[m] A<br />
1 (1) Z,C,AC,OV<br />
A<br />
A<br />
1 Z,C,AC,OV<br />
A<br />
<br />
1 (1) Z,C,AC,OV<br />
16<br />
A<br />
<br />
1 (1) C<br />
<br />
1<br />
A<br />
<br />
1<br />
1 (1) Z<br />
<br />
1<br />
A<br />
<br />
<br />
1<br />
1 (1) Z<br />
1<br />
1<br />
1<br />
Z,C,AC,OV<br />
Z<br />
Z
Add a,[90h]<br />
data<br />
memory<br />
Addm a,[90h]<br />
data<br />
memory<br />
Add a, 20H<br />
A 80H 20H<br />
ADC A,[90h]<br />
data<br />
memory<br />
ADCM A,[90h]<br />
data<br />
memory<br />
A<br />
80H<br />
80H<br />
A<br />
+<br />
A0H<br />
20H 90H<br />
A<br />
20H<br />
80H<br />
80H<br />
+<br />
90H A0H<br />
20H<br />
20H<br />
90H<br />
80H<br />
+<br />
A A0H<br />
A<br />
80H<br />
A<br />
80H<br />
+<br />
A1H<br />
20H<br />
90H<br />
20H<br />
C = 1<br />
A<br />
80H<br />
90H<br />
80H<br />
+<br />
A1H<br />
20H<br />
90H<br />
20H<br />
C = 1<br />
SUB A,[90h]<br />
data<br />
memory<br />
SUBM A,[90h]<br />
data<br />
memory<br />
SUB A,20h<br />
A 80H 20H<br />
80H<br />
SBC A,[90h]<br />
data<br />
memory<br />
SBCM A,[90h]<br />
data<br />
memory<br />
A<br />
20H 90H<br />
80H<br />
80H 20H<br />
-<br />
A 60H<br />
A<br />
20H 90H<br />
80H<br />
80H 20H<br />
-<br />
90H 60H<br />
A<br />
-<br />
60H<br />
A<br />
80H<br />
80H<br />
-<br />
A 5FH<br />
20H 90H A<br />
20H<br />
C = 0<br />
80H<br />
80H<br />
-<br />
90H 5FH<br />
20H 90H<br />
20H<br />
C = 0<br />
ADD A,[90H]<br />
data<br />
memory<br />
INC [90H]<br />
data<br />
memory<br />
INCA [90H]<br />
data<br />
memory<br />
DEC [90H]<br />
data<br />
memory<br />
DECA [90H]<br />
data<br />
memory<br />
A<br />
65H<br />
65H<br />
29H<br />
90H<br />
29H<br />
1<br />
20H<br />
20H<br />
90H<br />
1<br />
20H<br />
20H<br />
90H<br />
1<br />
21H<br />
21H<br />
1<br />
21H<br />
21H<br />
A<br />
+<br />
8EH<br />
DAA [90H]<br />
90H 94H<br />
DAA [90H]<br />
C = 0<br />
AC =0<br />
90H<br />
+<br />
21H<br />
A<br />
+<br />
21H<br />
90H<br />
-<br />
20H<br />
DAA BCD<br />
DAA<br />
If ((A.3~A.0) >9 or AC = 1)<br />
then [m].3~[m].0 ß (A.3~A.0) + 6, AC = ~AC<br />
else [m].3~[m].0 ß (A.3~A.0), AC = 0<br />
if (((A.7~A.4) + AC ) >9 or AC = 1)<br />
then [m].7~[m].4 ß (A.7~A.4) + 6 + AC, C = 1<br />
else [m].7~[m].4 ß (A.7~A.4) + AC, C = C<br />
ADD A,[90H] ; A=0x65, [90H]=0x29<br />
DAA [90H]<br />
0x65 + 0x29 = 0x8E C=0AC=0 1<br />
90H<br />
0x24( low nibble 0xE+6 =0x4 AC=1) 2<br />
<br />
90H 0x94(high nibble 0x8+AC = 0x9C=0)<br />
65+29 = 94 (BCD )<br />
A<br />
-<br />
20H
AND A, [90H]<br />
A10001111 (2)<br />
[90H] 01001010 (2)<br />
AND00001010 (2)<br />
OR A, [90H]<br />
A10001111 (2)<br />
[90H] 01001010 (2)<br />
OR11001111 (2)<br />
XOR A, [90H]<br />
A10001111 (2)<br />
[90H] 01001010 (2)<br />
XOR11000101 (2)<br />
A<br />
0AH<br />
A<br />
CFH<br />
A<br />
C5H<br />
ANDM A, [90H]<br />
A10001111 (2)<br />
[90H] 01001010 (2)<br />
AND00001010 (2)<br />
ORM A, [90H]<br />
A10001111 (2)<br />
[90H] 01001010 (2)<br />
OR11001111 (2)<br />
XORM A, [90H]<br />
A 10001111 (2)<br />
[90H] 01001010 (2)<br />
XORM11000101 (2)<br />
[90H]<br />
0AH<br />
[90H]<br />
CFH<br />
[90H]<br />
C5H
AND A, x<br />
A10001111 (2)<br />
x 01001010 (2)<br />
AND00001010 (2)<br />
OR A, x<br />
A10001111 (2)<br />
x 01001010 (2)<br />
OR11001111 (2)<br />
XOR A, x<br />
A10001111 (2)<br />
x 01001010 (2)<br />
XOR11000101 (2)<br />
A<br />
0AH<br />
A<br />
CFH<br />
A<br />
C5H<br />
CPL [m]<br />
[90H]10001000 (2)<br />
1’S<br />
01110111 (2)<br />
CPLA [m]<br />
[90H]10001000 (2)<br />
1’S<br />
01110111 (2)<br />
[90H]<br />
77H<br />
A<br />
77H<br />
XOR <br />
• <br />
– M1 + M2 = 0 è M1=M2<br />
• <br />
NOT<br />
– ~a = a + 1<br />
• <br />
c = a + bè c + a = b, c + b = a<br />
EX: mov a, [90h]<br />
xor a, [91h]<br />
xorm a,[90h]<br />
xorm a,[91h]<br />
• <br />
mov a, [90h]<br />
xor a, [91h]<br />
and a, 00000011b<br />
xorm a,[90h]<br />
xorm a,[91h
<strong>Instruction</strong> <strong>Set</strong> --<br />
<br />
<br />
<br />
RRA [m] <br />
bit<br />
1 None<br />
RR [m] <br />
bit<br />
1 None<br />
<br />
(1)<br />
RRCA [m] <br />
bit<br />
1 C<br />
<br />
RRC [m] <br />
bit<br />
1 C<br />
<br />
(1)<br />
RLA [m] <br />
bit<br />
1 None<br />
RL [m] <br />
bit<br />
1 (1) None<br />
<br />
RLCA [m] <br />
bit<br />
1 C<br />
<br />
RLC [m] <br />
bit<br />
1 (1) C<br />
<br />
<br />
CLR [m].i <br />
1 (1) None<br />
SET [m].i<br />
1 (1)<br />
None<br />
RL [m]<br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
RLA [m]<br />
A <br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
RLC [m]<br />
C<br />
b7 b6 b5 b4 b3 b2 b1 b0
C<br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
RLCA [m]<br />
A <br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
RR [m]<br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
RRA [m]<br />
A <br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
RRC [m]<br />
C<br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
RRCA [m]<br />
C<br />
b7 b6 b5 b4 b3 b2 b1 b0<br />
A <br />
b7 b6 b5 b4 b3 b2 b1 b0
<strong>Instruction</strong> <strong>Set</strong> --<br />
<br />
<br />
<br />
MOV A,[m]<br />
<br />
m<br />
A 1 None<br />
MOV [m],A<br />
A<br />
m<br />
1 (1) None<br />
MOV A,x<br />
x<br />
A<br />
1<br />
None<br />
<br />
JMP addr<br />
<strong>Instruction</strong> <strong>Set</strong> --<br />
<br />
<br />
<br />
<br />
<br />
2<br />
None<br />
SZ [m]<br />
SZA [m]<br />
SZ [m].i<br />
<br />
1 (2) None<br />
<br />
A<br />
1 (2) None<br />
<br />
1 (2) None<br />
SNZ [m].i<br />
<br />
1 1 (2)<br />
None<br />
SIZ [m]<br />
SDZ [m]<br />
SIZA [m]<br />
SDZA [m]<br />
CALL addr<br />
<br />
1 (3) None<br />
<br />
1 (3) None<br />
<br />
1<br />
1 (2) None<br />
<br />
<br />
1<br />
1 (2) None<br />
<br />
<br />
addr<br />
2<br />
None<br />
RET<br />
<br />
2<br />
None<br />
RET A,x<br />
x 2<br />
None<br />
RETI<br />
<br />
2<br />
None
<strong>Instruction</strong> <strong>Set</strong> --<br />
<br />
<br />
<br />
TABRDC [m]<br />
TABRDL [m]<br />
<br />
<br />
(current page)<br />
(ROM)<br />
2 (1)<br />
<br />
<br />
(last page)<br />
(ROM) 2 (1)<br />
None<br />
None<br />
NOP<br />
<br />
1<br />
None<br />
CLR [m]<br />
<br />
1 (1)<br />
None<br />
SET [m]<br />
<br />
0Xff<br />
1 (1)<br />
None<br />
CLR WDT<br />
<br />
1<br />
TO,PD<br />
CLR WDT1<br />
<br />
1<br />
TO(4),PD(4)<br />
CLR WDT2<br />
<br />
1<br />
TO(4),PD(4)<br />
SWAP [m]<br />
SWAPA [m]<br />
HALT<br />
<br />
low-nibblehigh-nibble<br />
<br />
low-nibblehigh-nibble1<br />
<br />
<br />
1<br />
1 (1)<br />
None<br />
None<br />
TO,PD<br />
<br />
[(1+2) 100-1+4] 100-1+7 = 30306
(TABRDC)<br />
• Port A8LED, LED<br />
MAIN: MOV A, TABL<br />
MOV TBLP, A<br />
MOV A,06<br />
MOV COUNT, A<br />
LOOP: TABRDC PA<br />
CALL DELAY<br />
INC TBLP<br />
SDZ COUNT<br />
JMP LOOP<br />
JMP MAIN<br />
TABL: DC 0000000010000001B<br />
DC 0000000001000010B<br />
DC 0000000000100100B<br />
DC 0000000000011000B<br />
DC 0000000000100100B<br />
DC 0000000001000010B<br />
(TABRDL)<br />
• , Current page table last<br />
page table<br />
MAIN: MOV A, 0<br />
MOV TBLP, A<br />
MOV A,06<br />
MOV COUNT, A<br />
LOOP: TABRDL PA<br />
CALL DELAY<br />
INC TBLP<br />
SDZ COUNT<br />
JMP LOOP<br />
JMP MAIN<br />
TABL: DC 0000000010000001B<br />
DC 0000000001000010B<br />
DC 0000000000100100B<br />
DC 0000000000011000B<br />
DC 0000000000100100B<br />
DC 0000000001000010B
(Computation jump)<br />
• , PCL LED<br />
MAIN: CLR INDEX<br />
MOV A, 06<br />
MOV COUNT, A<br />
LOOP: MOV A, INDEX<br />
CALL GET-VALUE<br />
MOV PA, A<br />
CALL DELAY<br />
INC INDEX<br />
SDZ COUNT<br />
JMP LOOP<br />
JMP MAIN<br />
GET-VALUE PROC<br />
ADDM A, PCL<br />
RET A,10000001B<br />
RET A,01000010B<br />
RET A,00100100B<br />
RET A,00011000B<br />
RET A,00100100B<br />
RET A,01000010B<br />
GET-VALUE ENDP<br />
<br />
• ADDM A, PCL<br />
<br />
ADDM A, PCL ; PCL=Acc+PCL<br />
JMP EQU-0 ; Jump to EQU-0 if Acc=0<br />
JMP EQU-1 ; Jump to EQU-1 if Acc=1<br />
JMP EQU-2 ; Jump to EQU-2 if Acc=2<br />
JMP EQU-3 ; Jump to EQU-3 if Acc=3<br />
… .