Back to 课程

Computer-science_A-level_Cie

0% Complete
0/0 Steps
  1. computers-and-components
    6 主题
  2. logic-gates-and-logic-circuits
    2 主题
  3. central-processing-unit-cpu-architecture
    6 主题
  4. assembly-language-
    4 主题
  5. bit-manipulation
    1 主题
  6. operating-systems
    3 主题
  7. language-translators
    2 主题
  8. data-security
    3 主题
  9. data-integrity
    1 主题
  10. ethics-and-ownership
    3 主题
  11. database-concepts
    3 主题
  12. database-management-systems-dbms-
    1 主题
  13. data-definition-language-ddl-and-data-manipulation-language-dml
    1 主题
  14. computational-thinking-skills
    1 主题
  15. algorithms
    14 主题
  16. data-types-and-records
    2 主题
  17. arrays
    2 主题
  18. files
    1 主题
  19. introduction-to-abstract-data-types-adt
    1 主题
  20. programming-basics
    1 主题
  21. constructs
    2 主题
  22. structured-programming
    1 主题
  23. program-development-life-cycle
    2 主题
  24. program-design-
    2 主题
  25. program-testing-and-maintenance
    3 主题
  26. user-defined-data-types
    1 主题
  27. file-organisation-and-access-
    3 主题
  28. floating-point-numbers-representation-and-manipulation
    3 主题
  29. protocols
    2 主题
  30. circuit-switching-packet-switching
    1 主题
  31. processors-parallel-processing-and-virtual-machines
    5 主题
  32. boolean-algebra-and-logic-circuits
    4 主题
  33. purposes-of-an-operating-system-os
    3 主题
  34. translation-software
    3 主题
  35. encryption-encryption-protocols-and-digital-certificates
    3 主题
  36. artificial-intelligence-ai
    4 主题
  37. recursion
    1 主题
  38. programming-paradigms
    4 主题
  39. object-oriented-programming
    7 主题
  40. file-processing-and-exception-handling
    2 主题
  41. data-representation
    5 主题
  42. multimedia
    3 主题
  43. compression
    2 主题
  44. networks-and-the-internet
    11 主题
课 Progress
0% Complete

Machine code vs assembly

What is machine code?

  • Machine code is a first-generation language

  • Instructions are directly executable by the processor

  • Written in binary code

Diagram showing programming language abstraction levels: machine code (binary), assembly, high-level compiled (C, C++), and interpreted (Python, JavaScript).
Levels of Abstraction of Programming Languages

What is assembly?

  • Assembly code is a second-generation language

  • The code is written using mnemonics, abbreviated text commands such as LDA (Load), STA(Store) 

  • Using this language programmers can write human-readable programs that correspond almost exactly to machine code

  • One assembly language instruction translates to one machine code instruction

  • Needs to be translated into machine code for the computer to be able to execute it

  • Each type of computer CPU has a specific instruction set

Instruction set

  • An instruction set is a list of all the commands that can be processed by a CPU

  • Each command has a binary code which is the machine code

  • In assembly the binary code is written using mnemonics and split into an opcode and operand

  • The opcode is the part of an instruction that tells the CPU what operation to perform

  • It’s short for “operation code”

  • Example operations: LDA (load), STA (store), ADD, INP, OUT, BRZ, BRA

  • The operand is the data or memory address the opcode will work with

  • It gives the extra detail the CPU needs to complete the instruction

  • Often used to specify a memory address, a value, or a label

Opcode

Operand

Explanation

LDM

#n

Immediate addressing. Load the number n to the accumulator (ACC).

LDD

<address>

Direct addressing. Load the contents of the location at the given address to ACC.

LDI

<address>

Indirect addressing. Use the value at the given address as a new address. Load contents to ACC.

LDX

<address>

Indexed addressing. Use <address> + index register to get the final address. Load to ACC.

LDR

#n

Immediate addressing. Load the number n to the index register (IX).

MOV

<register>

Move the contents of ACC to the given register (e.g. IX).

STO

<address>

Store the contents of ACC at the given memory address.

ADD

<address>

Add the contents of the given address to ACC.

SUB

<address>

Subtract the contents of the given address from ACC.

INC

<register>

Increment the contents of the register (ACC or IX) by 1.

DEC

<register>

Decrement the contents of the register (ACC or IX) by 1.

JMP

<address>

Unconditional jump to the given address.

CMP

<address>

Compare the contents of ACC with the contents of the given address.

CMP

#n

Compare the contents of ACC with the number n.

CMI

<address>

Indirect addressing. Compare ACC with the contents at the address stored in <address>.

JPE

<address>

Jump to <address> if the previous compare result was true (equal).

JPN

<address>

Jump to <address> if the previous compare result was false (not equal).

IN

Take input from the keyboard and store its ASCII value in ACC.

OUT

Output to the screen the character stored in ACC.

END

End the program and return control to the operating system

All questions will assume there is only one general purpose register available (Accumulator)

ACC denotes Accumulator

IX denotes Index Register

<address> can be an absolute or symbolic address

# denotes a denary number, e.g. #123

B denotes a binary number, e.g. B01001010

& denotes a hexadecimal number, e.g. &4A

Responses

您的邮箱地址不会被公开。 必填项已用 * 标注