1 / 58

E3165 DIGITAL ELECTRONIC SYSTEM

E3165 DIGITAL ELECTRONIC SYSTEM. 3.0 INTRODUCTION. Message sent by programmers (program instructions) understood by the computer and vice versa. Language that friendly to human also understandable to computer systems. Three level of language: Low level – machine language

gary
Télécharger la présentation

E3165 DIGITAL ELECTRONIC SYSTEM

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. E3165 DIGITAL ELECTRONIC SYSTEM

  2. 3.0 INTRODUCTION • Message sent by programmers (program instructions) understood by the computer and vice versa. • Language that friendly to human also understandable to computer systems. • Three level of language: • Low level – machine language • Middle level – assembly language • High level – high-level language

  3. 3.0 INTRODUCTION

  4. 3.1 HLL,AL,ML • Machine language: • Natural language of a particular computer system. • Strings of numbers or binary codes (0 or 1). • Machine-dependant (differ from one µP to other µP. • Programmers need to know specifically the architecture of CPU. • Assembly language: • Using english-like abbreviations (MUL). • Overcome problems – writing machine language is too slow and tedious. • Assembler as translator. • Programmer need to know the basic architecture.

  5. 3.1 HLL,AL,ML • High-level language: • Using everyday English and common mathematical notation. (x = I + j) • Overcome problems : assembly language require many instruction to accomplish a simple task. • Single instruction in HLL = several AL instructions. • Compiler as translator. • Programmers do not need to know the architecture of CPU.

  6. 3.1 HLL,AL,ML

  7. 3.1 HLL,AL,ML

  8. 3.2 ASSEMBLY LANGUAGE PROGRAMING ASM68K

  9. 3.2 ASSEMBLY LANGUAGE PROGRAMING

  10. 3.2.1 MACHINE INSTRUCTION / CODE FORMAT

  11. 3.3 INSTRUCTION FORMAT • There are many MC68000 instructions. However, theses instructions comply to a standard instruction format: • Label – a user-defined symbol representing the address associated with the instruction. Up to 8 alphanumeric, begin with letter, terminated by a space. SLIDE 48

  12. 3.3 INSTRUCTION FORMAT • Operator . • a mnemonic code for MC68000 instructions . • An assembler directive / pseudo-instruction / pseudo-operation. • Macro call (repetitive instructions in a program which arecodified only once and can be used as many times as necessary) • Operand – depends on the operator, may has more than one operand. • Comment – explanation about the execution of instruction. • Data format: • Byte | Word | Longword | Sign-extended

  13. 3.4.1 DATA TRANSFER / MOVE GROUP • Transfer / move data between registers and memory. • Instructions of data transfer group. MOVE.B D1,D2 MOVE.B D6,CCR MOVE.W SR,D6 MOVE.L USP,A1 MOVE.L A2,USP MOVEA.W #$4321,A0 MOVEQ.B #01,D4 MOVEM.W D2/D4-D6, $4000 MOVEM.L $4000,D0-D5 LEA START,A0 EXG D1,D2 SWAP D3 CLR.B $3000

  14. 3.4.1 MOVE # menunjukkan data sebenar. $ menunjukkannomborheksa • Byte(B), Word(W) and Long word(L). • R R , R M , M M , EA SR , USP An • Example 1: • MOVE.W #$72,D1 • Before : D1 = $00200500 • After : D1 = $00200072 • Example 2: • MOVE.B D0,D1 • Before : D1 = $00200500 , D0 = $00002222 • After : D1 = $00200522 , D0 = $00002222 • Example 3: • MOVE.B $3000,D1 • Before : D1 = $00200500 , • After : D1 = $00200532 ,

  15. 3.4.1 MOVE(CONT.) @ • Example 4: • MOVE.W D6,$4000 • Before: D6 = $AB206541 , • After : D6 = $AB206541 , • Example 5: • MOVEA.W D6,A2 • Before : D6 = $AB206541 , A2 = $ABCD1234 • After : D6 = $AB206541 , A2 = $00006541 • Example 6: • MOVEA.W D6,A2 • Before : D6 = $AB20A541 , A2 = $ABCD1234 • After : D6 = $AB206541 , A2 = $FFFFA541 @

  16. 3.4.1 MOVE(CONT.) • Example 7: • MOVEA.L D6,A2 • Before : D6 = $AB206541 , A2 = $ABCD1234 • After : D6 = $AB206541 , A2 = $AB206541 • Example 8: • MOVEQ #$04,D3 (MOVEQ #XXX,Dn) • Before : D3 = $AB206541 • After : D3 = $00000004 • Example 9: • MOVEQ #$80,D3 • Before : D3 = $AB206541 • After : D3 = $FFFFFF80 -128 (80) hingga 127 (7F)

  17. 3.4.1 MOVE(CONT.) • Example 10: • MOVEM.W D2/D5/D0,$200 • Before : D0 = $11112222 , D2 = $33334444 , D5 = $55556666 , • After : D0 = $11112222 , D2 = $33334444 , D5 = $55556666 , • Example 11: • MOVEM.L D2/D5/D0,-(A4) • Before : D0 = $11112222 , D2 = $33334444 , D5 = $55556666 , A4 = $0000050C • After : D0 = $11112222 , D2 = $33334444 , D5 = $55556666 , A4 = $00000500 Predecrement (tolakdulu) B : – 1 , W : – 2 , L : – 4 Dlmcontohada 3 daftarmaka 3x4=12 , 50C – C = 500

  18. 3.4.1 MOVE(CONT.) • Example 12: • MOVEM.W $200,D2/D5/D0 • Before : D0 = $11112222 , D2 = $33334444 , D5 = $55556666 , • After : D0 = $FFFF9868 , D2 = $00006541 , D5 = $00004377 , • Example 13: • MOVEM.L (A4)+,D2/D5/D0 • Before : D0 = $1111222 , D2 = $33334444 , D5 = $55556666 , A4 = $00000500 • After : D0 = $846AC1DD , D2 = $451287A4 , D5 = $54A2F221 , A4 = $0000050C Posincrement (tmbhkmdn) B : + 1 , W : + 2 , L : + 4 Dlmcontohada 3 daftarmaka 3x4=12 , 500 + C = 50C

  19. 3.4.1 MOVE(CONT.) $502 dan $501 adalahalamat I/O • Example 14: • MOVEP.W D2,1(A1) • Before : D2 = $AB206541 , A1 = $00000501 • After : D2 = $AB206541 , A1 = $00000501 • Example 15: • EXG D1,D5 • Before : D1 = $11223344 , D5 = $66778899 • After : D1 = $66778899 , D5 = $11223344 • Example 16: • SWAP D1 • Before : D1 = $11223344 • After : D1 = $33441122

  20. 3.4.1 MOVE(CONT.) OPER EQU $2001 MOVEA.L #OPER,A1 OPER EQU $2001 LEA OPER,A1  • Example 17: • After : A1 = $00002001 • MOVEA.L $2001,A1 ≠ LEA $2001,A1 • Example 18: • CLR.B D1 • Before : D1 = $11223344 • After : D1 = $ 11223300    MOVEA.L #$2001,A1 LEA $2001,A1

  21. 3.4.2 ARITHMETIC ADD.W $300,D1 ADD.L D2,$218 ADDI.B #$44,D3 ADDQ.W #$32,D2 ADDX D1,D2 ADDX -(A1),-(A3) ADDA $100,A6 SUB.W $300,D1 SUB.L D2,$218 SUBI.B #$44,D3 SUBQ.W #$32,D2 SUBX D1,D2 SUBX -(A1),-(A3) SUBA $100,A6 NEG D1 NEGX A4 MULS $32,D5 MULU #$04,D5 DIVS $32,D5 DIVU #$04,D5 EXT.W D3 EXT.L D2

  22. 3.4.2 ARITHMETIC(CONT.) • Byte(B), Word(W) and Long word(L). • Data via register, memory, absolute data and I/O port. • Example 1: • ADDI.W #$72,D1 • Before : D1 = $00200500 • After : D1 = $00200572 • Example 2: • ADD.L D0,D1 • Before : D1 = $00200500 , D0 = $00002222 • After : D1 = $00202722 , D0 = $00002222 • Example 3: • ADD.W $3000,D1 • Before : D1 = $00200500 , • After : D1 = $00203743 ,

  23. 3.4.2 ARITHMETIC(CONT.) @ • Example 4: • ADD.W D6,$4000 • Before: D6 = $AB206541 , • After : D6 = $AB206541 , • Example 5: • ADDA.W D6,A2 • Before : D6 = $AB206541 , A2 = $ABCD1234 • After : D6 = $AB206541 , A2 = $ABCD7775 • Example 6: • ADDA.L D6,A2 • Before : D6 = $AB20A541 , A2 = $ABCD1234 • After : D6 = $AB206541 , A2 = $56EDB775 , C = 1 @

  24. 3.4.2 ARITHMETIC(CONT.) • Example 7: • ADDX.B D2,D3 • Before : D2 = $AB206541 , D3 = $ABCD1234 , X = 1 • After : D2 = $AB206541 , D3 = $AB206576 , X = 1 • Example 8: • ADDQ.B #$04,D3 (ADDQ #XXX,Dn) • Before : D3 = $AB206541 • After : D3 = $AB206545 • Example 9: • SUB.W #$80,D3 • Before : D3 = $AB206541 • After : D3 = $AB2064C1 -128 (80) hingga 127 (7F)

  25. @ menunjukkannombor octal % menunjukkannomborbinari 3.4.2 ARITHMETIC(CONT.) • Example 10: • SUBI.L #10,D2 • Before : D2 = $AB206541 • After : D2 = $AB206537 • Example 11: • SUBQ.W #@11,D3 (SUBQ #XXX,Dn) • Before : D3 = $AB206541 • After : D3 = $AB200038 • Example 12: • NEG.W D3 • Before : D3 = $AB206541 • After : D3 = $AB209ABF -128 (80) hingga 127 (7F) NEG = Pelengkap 2 $41 = 01000001 Songsangkan 10111110 + 1 $BF = 10111111

  26. 3.4.2 ARITHMETIC(CONT.) @ menunjukkannombor octal % menunjukkannomborbinari • Example 13: • MULU #2,D2 ;16 bit x 16 bit = 32 bit • Before : D2 = $AB206541 • After : D2 = $0000CA82 • Example 11: • MULU #2,D2 • Before : D2 = $AB20FFFF • After : D2 = $0001FFFE • Example 12: • DIVU #2,D3 ;32 bit / 16 bit = 16 bit lower (result) 16 bit upper ( remainder) • Before : D3 = $00006541 • After : D3 = $000132A0 6541F = 25921 32A016 = 1296010

  27. 3.4.3 LOGICAL OPERATION AND.W $300,D1 AND.L D2,$218 ANDI.B #$44,D3 ANDI #%11011,CCR ADDI #$25,SR OR.W $300,D1 OR.L D2,$218 ORI.B #$44,D3 ORI #%11011,CCR ORI #$25,SR EOR.W $300,D1 EORI.B #$44,D3 EORI #%11011,CCR EORI #$25,SR NOT.W D2

  28. 3.4.3 LOGICAL OPERATION(CONT.) • Example 1: • AND.B #$3E,D1 • Before : D1 = $12345674 • After : D1 = $12345634 • Example 2: • OR.B D0,D1 • Before : D1 = $1234563E , D0 = $98765474 • After : D1 = $1234567E , D0 = $98765474 • Example 3: • NOT.B D1 • Before : D1 = $12345655 , • After : D1 = $123456AA ,

  29. 3.4.4 SHIFT AND ROTATE B : 0 to 255 | $00 - $FF • Example 4:

  30. 3.4.4 SHIFT AND ROTATE (CONT.) B : 0 to 255 | $00 - $FF • Example 5:

  31. 3.4.4 SHIFT AND ROTATE (CONT.) B : 0 to 255 | $00 to $FF • Example 6:

  32. 3.4.4 SHIFT AND ROTATE (CONT.) B : 0 to 255 | $00 to $FF • Example 7:

  33. 3.4.4 SHIFT AND ROTATE (CONT.) B : 0 to 127 | $00 - $7F -1 to -128 | $FF to $8F • Example 8:

  34. 3.4.4 SHIFT AND ROTATE (CONT.) B : 0 to 127 | $00 - $7F -1 to -128 | $FF to $8F • Example 9:

  35. 3.4.4 SHIFT AND ROTATE (CONT.) • Example 10:

  36. 3.4.5 CONTROL TRANSFER • Normally : PC point to the next instruction. PC has the address of next instruction. • Jump / branch : PC will be load with target address. • Jump : unconditional • Branch : conditional • Example: JMP $8450 BCS $8A50 • PC is a 32 bit register.

  37. 3.4.5 CONTROL TRANSFER • Conditional transfer instruction i. Bcc instruction (Branch conditionally) Format: Bcc DST Example: START MOVE.W D3,D4 ….. BNE NEXT ;(Branch if Z=0) NEG D3 …. NEXT SUB.W #32, D1

  38. 3.4.5 CONTROL TRANSFER ii. DBcc instruction (test condition, decrement & branch) Format: DBccDn,DST Operation: Test condition; i. condition met; no branch, execute next instruction. ii. condition not met; (Dn - 1) if Dn ≠ -1; branch to DST if Dn = -1; no branch, execute next instruction. Example: START CLR.L D4 ; D4 = $00000000 ….. DBNE D4,NEXT ; condition (Z=0) NEG D3 …. NEXT SUB.W #32, D1

  39. 3.4.5 CONTROL TRANSFER iii. Scc instruction (set conditionally) Format: Scc DST Operation: Test condition: i. condition met; DST will get 1s ii. condition not met; DST will get 0s No branch involved. Example: START CLR.L D4 ; Z = 1 SNE D5 ; D5 = $00000000

  40. 3.4.5 CONTROL TRANSFER • JMP • – always jump to any address. • JMP DST • BRA • always branch but up to 65536 (216) address. • BRA DST • .S for branch to 256 (28) address • BRA.S DST • NOP • no operation • delay in execution time. • STOP • operand loads into status register and stop. • STOP #$78

  41. 3.4.6 STACK CONTROL • Stack is a data structure that can be used to save data. • Stack works in LIFO concept.

  42. 3.4.6 STACK CONTROL • There are two (2) stack: User Stack – point by USP & Supervisor Stack – point by SSP

  43. 3.4.6 STACK CONTROL • PUSH data into stack. • 1. decrement SP 2. move data into stack • MOVE.B D1,-(A0) • POP data from stack. • 1. move data from stack 2. increment SP • MOVE.B (A0)+,D1

  44. 3.4.7 SUBROUTINE CONTROL • An approach to simplify a long and complex program. • Grouping repeated instructions into subroutine. • This subroutine will be called when needed. • Operation: • Before executing subroutine, current data (registers, SR, PC) need to be save in stack first. • Subroutine is carried out • After the subroutine finish, data in stack will be restored back. • Instruction : JSR, BSR, RTS, RTR

  45. 3.4.7 SUBROUTINE CONTROL • JSR • JSR EA – the subroutine maybe anywhere in the memory. • Operation: • PC  -(SP) • EA  PC • BSR • BSR EA – the subroutine must be within 65536 address • Operation: • PC  -(SP) • PC + d  PC

  46. 3.4.7 SUBROUTINE CONTROL • RTS • RTS – return from subroutine • Operation: • (SP)+  PC • RTR • RTR – return and restore CCR • Operation: • (SP)+  CCR • (SP)+  PC

  47. REVISION 68000 INSTRUCTIONS: • DATA TRANSFER/ MOVE GROUP • move,movem,lea,exg,swap,clr • ARITHMETIC OPERATION • add,sub,neg,mul,div,ext • LOGICAL OPERATION • and,or,not,eor • SHIFT AND ROTATE (x) • lsl,lsr,asl,asr,rol,ror,roxl,roxr (x) • CONTROL TRANSFER GROUP • Jmp,bcc,dbcc,scc,nop,stop • STACK CONTROL INSTRUCTION • SUBROUTINE CONTROL INSTRUCTION • jsr,bsr,rts,rtr

  48. 3.4.8 ASSEMBLER DIRECTIVES SLIDE 11 • Assembler directives are not executed during program execution. • ORG : – instruct the assembler to assemble the program. – initiate the address of the first instruction. – ORG $1000 • END – terminate the assembly process. • EQU – assign value – COUNTER EQU $30 • DC – reserve memory with initial values. – DATA DC.B $32,$65,$21,$33 • DS – reserve memory with no initial values – SUM DS.B 6 TOTAL DS.W 1

  49. 3.4.8 ASSEMBLER DIRECTIVES

  50. 3.4.8 ASSEMBLER DIRECTIVES

More Related