27.01.2015 Views

HT48R70A Instruction Set

HT48R70A Instruction Set

HT48R70A Instruction Set

SHOW MORE
SHOW LESS

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 />

… .

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!