SlideShare a Scribd company logo
Program Control Instructions A Course in Microprocessor Electrical Engineering Dept. University of Indonesia
The Jump Group Jump (JMP) allows the programmer to skip sections of a program and branch to any part of the memory for the next instruction A Conditional Jump allows the programmer to make decisions based upon numerical test Unconditional Jump  ( fig.6.1 ) Short Jump a 2-byte instruction that allows jumps or branches to memory locations within +127 and -128 bytes from the address following the jump is called  relative jump
The Jump Group (cont’d) the jump address is not stored with the opcode but a distance or displacement follows the opcode See  fig.6.2  and study  example 6.1 Near Jump It passes control to an instruction in the current code segment located within 32K bytes from the near jump The near jump is relocatable known as relative jump See  fig.6.3  and study  example 6.2 Far Jump It obtains new segment and offset address to accomplish the jump ( fig.6.4  and  example 6.3 )
The Jump Group (cont’d) Jumps with Register Operands known as indirect jump the address of the jump is in the register specified by the jump instruction (i.e., the contents of the register are transferred directly into the instruction pointer) Study  example 6.4 Indirect Jump Using an Index It uses the [] form of addressing to directly access the jump table The JMP Table [SI] instruction ( example 6.5 ) points to a jump address stored at the code segment offset  location addressed by SI
The Jump Group (cont’d) Conditional Jump and Conditional Sets The conditional jump instructions test the following flag bits: sign (S), zero (Z), carry (C), parity (P), and overflow (O) --- see  Table 6.1 if the condition under test is true, a branch to the label associated with the jump instruction occurs Otherwise, the next sequential step in the program executes The conditional jump instructions all test flag bits, except for the JCXZ (jump if CX=0) and JECXZ (jump if ECX=0) (study the  example 6.6 ) See also  Table 6.2   for the conditional set instruction
The Jump Group (cont’d) Loop It is a combination of a decrement CX and JNZ conditional jump Example 6.7  shows how to add data in a block of memory with data in another block of memory Conditional Loops LOOPE (loop while equal) jumps if CX != 0 while an equal condition exists (the same as LOOPZ) LOOPNE (loop while not equal) jumps if  CX != 0 while a not-equal condition exists (LOOPNZ)
Controlling the Flow of an  Assembly Language Program It is much easier to use the assembly language statements .IF., .ELSE., .ELSEIF.,  and  .ENDIF. (study ex.  6.8 ,  6.9 ,  6.10  and  Table 6.3 ) DO-WHILE Loops Pair: .WHILE and .ENDW Study  example 6.11 , 6.12, and 6.13 REPEAT-UNTIL Loops Pair: .REPEAT and .UNTIL Study Example 6.14 and 6.15
Procedures A procedure is a group of instructions that usually performs one task reusable - takes small amount of time use stack - can be NEAR or FAR Pair: PROC - ENDP (study  example 6.16 ) CALL It transfers the flow of the program to the procedure CALLs with Register Operands E.g., CALL BX (example 6.17)
Procedures  (cont’d) CALLs with Indirect Memory Address useful whenever different subroutines need to be chosen from a program (see Example 6.18) RET It removes either a 16-bit (or 32-bit) number from the stack and places it into IP (and CS) the new location (IP and CS:IP) is the address of the next instruction that immediately follows the most recent CALL to a procedure ( Fig. 6.8 ) Study Example 6.19
Introduction to Interrupt An Interrupt is either a hardware-generated CALL (externally derived from a hardware signal) or a software-generated CALL(internally derived of the execution of an instruction or by some other internal event) Interrupt Vectors An interrupt vector is a 4-byte number stored in the first 1,024 bytes of memory (in the real mode) The vector table is replaced by an interrupt descriptor table that uses 8-byte descriptors to describe each of the interrupts There are 256 different interrupt vectors; each vector contains an address of an interrupt service procedure
Introduction to Interrupt (cont’d) Interrupt Instructions INT, INTO, and INT 3 INTs 256 software interrupt (INT) available Whenever a software interrupt executes, it: pushes the flags onto the stack clears the T and I flag bits pushes CS onto the stack fetches the new value for IP/EIP from the vector jump to the new location (CS:IP/EIP)
Introduction to Interrupt (cont’d) IRET/IRETD  Used only with software or hardware interrupt service procedure The IRET instruction will: pop stack data back into the IP pop stack data back into CS pop stack data back into the flag register INT 3 A special software interrupt designed to be used as a breakpoint It is common to insert an INT 3 instruction in software to interrupt or break the flow of the software
Introduction to Interrupt (cont’d) INTO Interrupt on overflow is a conditional software interrupt that tests the overflow flag (O) if O = 0 the INTO instruction performs no operation if O = 1 an INTO instruction executes It appears in software that adds or subtracts signed binary numbers --> INTO detects the overflow condition An Interrupt Service Procedure  (Ex. 6.20) The main difference between this procedure and a normal far procedure is that it ends with the IRET instruction instead of the RET instruction, and the contents of the flag register are saved on the stack
Introduction to Interrupt (cont’d) Interrupt Control The set interrupt flag instruction (STI) enables the INTR pin The clear interrupt flag instruction (CLI) disables the INTR pin Interrupts in the Personal Computer See Table 6.5
Machine Control and Miscellanous Instructions These instructions provide control of the carry bit, sample the BUSY/TEST pin, and perform various other functions Controlling the Carry Flag Bit There are three instructions that control the contents of the carry flag: STC (set carry), CLC (clear carry) and CMC (complement carry) WAIT The WAIT instruction monitors the hardware BUSY/TEST pins
Machine Control and  Miscellanous Instructions  (cont’d) HLT The halt instruction that stops the execution of software Three ways of to exit a halt: by an interrupt, by a hardware reset, or during DMA operation NOP It performs no operation (useful for delaying the operation)
 
 
 
0000  33 DB  XOR  BX,BX 0002  B8 0001  START:  MOV AX,1 0005  03 C3  ADD AX,BX 0007  EB 17  JMP SHORT NEXT   0020  8B D8  NEXT  :  MOV BX,AX 0022  E8 DE  JMP START Example 6.1 0000  33 DB    XOR  BX,BX 0002  B8 0001  START:  MOV AX,1 0005  03 C3  ADD AX,BX 0007  E9 0200 R  JMP  NEXT   0020  8B D8  NEXT  :  MOV BX,AX 0022  E9 0002 R  JMP START   Example 6.2
Example 6.3     EXTRN UP : FAR 0000  33 DB  XOR  BX,BX 0002  B8 0001  START: MOV AX,1 0005  03 C3  ADD AX,BX 0007  E9 0200 R  JMP  NEXT   0020  8B D8  NEXT  :  MOV BX,AX 0022  E9 0002  ---- R  JMP FAR PTR START   0207  EA 0000 ---- E  JMP UP  
  ;A program that reads 1, 2 or 3 from the keyboard  ;if 1, 2 or 3 is typed , a 1, 2 or 3 is displayed ; .MODEL SMALL  ;select small model 0000   .DATA start of data segment 0000 0030 R TABLE  DW  ONE ;define lookup table 0002 0034 R DW  TWO 0004 0038 R  DW  THREE 0000 .CODE start code segment STARTUP ;start of program 0017 TOP: 0017 B4  01  MOV  AH,1 ;read key into AL 0019 CD 21  INT 21H   001B 2C 31  SUB  AL,31H ;convert to biner 001D 72 F8 JB  TOP ;if below ‘1’ typed 001F 3C 02 CMP AL,2 0021 77 F4 JA  TOP ;if above ‘3’ typed   0023 B4 00 MOV  AH,00H ;double to 0, 2  or 4 0025 03 C0 ADD  AX,AX 0027 BE 0000 R MOV  SI,OFFSET TABLE  ;address lookup table 002A 03 F0  ADD  SI,AX ;form lookup address 002C 8B 04  MOV  AX,[SI] ;get ONE, TWO or THREE 002E FF E0 JMP  AX ;jump address 0030 ONE: 0030 B2 31 MOV  DL,’1’ ;load ‘1’ for display 0032 EB 06  JMP BOT ;go display ‘1’ 0034 TWO: 0034 B2 32  MOV  DL,’2’ ;load ‘2’ for display 0036 EB 02  JMP BOT ;go display ‘2’ 0038 THREE: 0038 B2 33 MOV DL,’3’ ;load ‘3’ for display 003A BOT: 003A B4 02  MOV AH,2 ;display number 003C CD 21  INT 21H .EXIT ;exit to DOS END ;end of file Example 6.4
Example 6.5   .MODEL SMALL  ;select small model 0000   .DATA ;start of data segment 0000 0030 R TABLE  DW  ONE ;define lookup table 0002 0034 R DW  TWO 0004 0038 R  DW  THREE 0000 .CODE ;start code segment .STARTUP ;start of program 0017 TOP: 0017 B4  01  MOV  AH,1 ;read key into AL 0019 CD 21  INT 21H   001B 2C 31  SUB  AL,31H ;convert to biner 001D 72 F8 JB  TOP ;if below ‘1’ typed 001F 3C 02 CMP AL,2 0021 77 F4 JA  TOP ;if above ‘3’ typed 0023 B4 00 MOV  AH,0 ;calculate table address 0025 03 C0 ADD  AX,AX 0027 03 F0 ADD SI,AX 0029 FF A4  0000 R JMP TABLE  [SI] ;jump to ONE, TWO or THREE 002D ONE: 002D B2 31 MOV  DL,’1’ ;load  DL with ‘1’ 002F EB 06  JMP BOT 0031 TWO: 0031 B2 32  MOV  DL,’2’ ;load  DL with ‘2’ 0033 EB 02  JMP BOT 0035 THREE: 0035 B2 33 MOV DL,’3’ ;load DL with‘3’  0037 BOT: 0037 B4 02  MOV AH,2 ;display ONE, Two or THREE 0039 CD 21  INT 21H .EXIT ;exit to DOS END ;end of file  
Example 6.6 ;A procedure that searches a table of 100 bytes for 0AH ;The address, TABLE, is transferred to the procedure  ;through the SI register ; 0017 SCAN  PROC NEAR 0017 B9 0064 MOV  CX,100 ;load count of 100 001A B0 0A MOV AL,0AH ;load AL with 0AH 001C FC  CLD ;select increment 001D F2/AE REPNE JMP  NEXT ;test 100 bytes fir 0AH 001F F9 STC ;set carry for not found 0020 F3 01 JCXZ  NOT_FOUND ;if not found 0022 F8 CLC ;clear carry if found   0023 NOT_FOUND:   0023 C3 RET ;return from procedure   0024  SCAN ENDP
Example 6.7 ;A program that sums the contens of  BLOCK1 and BLOCK2 ;and stores the result over top of data in BLOCK2 ;through the SI register ; .MODEL  SMALL  ;select small model  0000 .DATA ;start of data segment 0000 0064 [ BLOCK1 DW 100 DUP (?) ;100 bytes for BLOCK1   0000 ] 00C8 0064 [ BLOCK2 DW 100 DUP (?) ;100 bytes for  BLOCK2   0000 ] 0000 .CODE ;start of code segment .STARTUP ;start of program 0017 8C D8 MOV AX,DS ;overlap DS and ES 0019 8E C0 MOV ES,AX 001B FC    CLD  ;select increment 001C B9 0064 MOV CX,100 ;load count 100 001F BE 0000 R MOV SI,OFFSET BLOCK1 ;address BLOCK1 0022 BF 0000 R MOV DI,OFFSET BLOCK2 ;address BLOCK2 0025  L1: 0025 AD LODSW ;load AX with BLOCK1 0026 26:03 05 ADD AX,ES:[DI] ;add BLOCK2 data to AX 0029 AB STOSW ;store sum in BLOCK2 002A E2 F9 LOOP L1 ;repeat 100 times .EXIT ;exit to DOS END ;end file
; Inti Program Sequence MOV AH,30H INT 21 H .IF  AL<3  && AH<30 MOV AH,4CH INT 21H .ENDIF Example 6.8(a) Example 6.8(b) ; Diagram file bahasa Mesin pada contoh 6.8 (a) ; 0000 B4 30   MOV AH,30H 0002 CD 21   INT 21H  .IF AL<3 &&  AH<30 0004 3C 03 *   CMP AL,003H 0006 73 09 *  JAE  @c0001 0008 80 FC 1E*  CMP AH,01EH 000B 73 04 *  JAE @c0001 000D B4 4C   MOV AH,4CH 000F CD 21   INT 21H .ENDIF 0011  * @C0001:
Example 6.9   [c2]
Example 6.10 ; Program yang membaca sebuah key dan menyimpan dalam Hexadecimal ; Nilai pada memori lokasdi TEMP.     .Mode Small   : Pilih model SMALL 0000   .  Data   : Memulai data segmen 0000  00   TEMP  DB?   : Define TEMP 0000    .CODE   : Awal Code segment   STARTUP   : Start program 0017  B4  01   MOV AH,1   : Pembacaan key 0019  CD 21   INT 21H   . IF  AL>=’a’ && AL<=’f’   : Bila dibagian sisi bawah 0023  2C  57  SUB AL,57H   .ELSEIF  AL>=’A’ && AL<=’F’  : bila bagian sisi atas 002F  2C  37   .ELSE   : Hal lain 0033  2C  30   .  SUB AL,30H   .ENDIF A2  0000 R  MOV  TEMP, AL   .EXIT    : Keluar DOS   END   : Akhir file
 
Example 6-16 0000 SUMS PROC  NEAR 0000   03  C3 ADD AX,BX 0002  03  C1 ADD AX,CX 0004  03  C2 ADD AX,DX 0006  C3 RET 0007 SUMS ENDP 0007 SUMS1 PROC  FAR 0007  03  C3 ADD AX,BX 0009  03  C1 ADD AX,CX
 
 
 

More Related Content

PDF
PLC y Electroneumática: Controladores lógicos programables por W. Bolton 4 ed...
DOCX
32 bit ALU Chip Design using IBM 130nm process technology
DOCX
PPT
Chp5 pic microcontroller instruction set copy
PPTX
Flag control
PPTX
Flags
 
PPTX
Flag Registers (Assembly Language)
PDF
Instructions
PLC y Electroneumática: Controladores lógicos programables por W. Bolton 4 ed...
32 bit ALU Chip Design using IBM 130nm process technology
Chp5 pic microcontroller instruction set copy
Flag control
Flags
 
Flag Registers (Assembly Language)
Instructions

What's hot (20)

PDF
Understanding Tomasulo Algorithm
PPT
branch ins 8051
PPT
subroutines and interrupts
PDF
Vulnerabilities analysis of fault and Trojan attacks in FSM
DOCX
Flag register 8086 assignment
PPT
Verilog Lecture3 hust 2014
PPTX
Branching instructions in 8086 microprocessor
PDF
Tomasulo Algorithm
PDF
NG3S903 - Electronic Systems Engineering - Fault Modelling Techniques
PPTX
8085:branching and logical instruction
PPT
microprocessors
PDF
8051-mazidi-solution
PDF
Stack and subroutine
PDF
Solution manual 8051 microcontroller by mazidi
PDF
Microprocessor and Microcontroller Lab Manual!
PPTX
PPTX
8051 microcontroller
PPTX
8051 basic programming
PDF
Docfoc.com ericsson commands
Understanding Tomasulo Algorithm
branch ins 8051
subroutines and interrupts
Vulnerabilities analysis of fault and Trojan attacks in FSM
Flag register 8086 assignment
Verilog Lecture3 hust 2014
Branching instructions in 8086 microprocessor
Tomasulo Algorithm
NG3S903 - Electronic Systems Engineering - Fault Modelling Techniques
8085:branching and logical instruction
microprocessors
8051-mazidi-solution
Stack and subroutine
Solution manual 8051 microcontroller by mazidi
Microprocessor and Microcontroller Lab Manual!
8051 microcontroller
8051 basic programming
Docfoc.com ericsson commands
Ad

Viewers also liked (11)

PDF
Microprocessor Instructions
PPT
MICROPROCESSOR INSTRUCTION SET OF 8085
PDF
Assembly level language
PPTX
8086 Microprocessor powerpoint
PDF
Unit 4 assembly language programming
PPT
Data transfer and manipulation
PPTX
Instruction Set of 8086 Microprocessor
PPT
Assembly language programming_fundamentals 8086
PPTX
Instruction set of 8086
PPTX
8086 microprocessor-architecture
PPT
Assembly language programming(unit 4)
Microprocessor Instructions
MICROPROCESSOR INSTRUCTION SET OF 8085
Assembly level language
8086 Microprocessor powerpoint
Unit 4 assembly language programming
Data transfer and manipulation
Instruction Set of 8086 Microprocessor
Assembly language programming_fundamentals 8086
Instruction set of 8086
8086 microprocessor-architecture
Assembly language programming(unit 4)
Ad

Similar to Chapter6-mikroprocessor (20)

PPT
1344 Alp Of 8086
PPT
Chp6 assembly language programming for pic copy
PDF
Switch Control and Time Delay - Keypad
PDF
The 8051 Microcontroller: A Detailed Guide to its Features, Advantages, and U...
PPTX
Instruction Set Architecture
PPT
Microcontrollers ii
PDF
8085_MicroelectronicAndMicroprocess.pdf
PDF
Analog to Digital Converter
PPT
MEMORY.ppt 8051/8052 MEMORY MANEGEMENT MEMORY DESCRIPTION
PPT
Power Point Presentation Microcontrollers
PPT
introduction to Microcontrollers 8051.ppt
PPT
MicrocontrollersII.ppt
PPT
Mod 5.1 - Assembler-Summaryyyyyyyyyyyyyyy.ppt
PPT
1. Instructionset.pptfor engineering student
PPT
Programming-8085 programming, description and base model.ppt
PDF
Real Time Embedded System
PPT
Lecture_4__8051_Instruction_Set__Rv01.ppt
PPT
Assembler
PPT
Assembler
1344 Alp Of 8086
Chp6 assembly language programming for pic copy
Switch Control and Time Delay - Keypad
The 8051 Microcontroller: A Detailed Guide to its Features, Advantages, and U...
Instruction Set Architecture
Microcontrollers ii
8085_MicroelectronicAndMicroprocess.pdf
Analog to Digital Converter
MEMORY.ppt 8051/8052 MEMORY MANEGEMENT MEMORY DESCRIPTION
Power Point Presentation Microcontrollers
introduction to Microcontrollers 8051.ppt
MicrocontrollersII.ppt
Mod 5.1 - Assembler-Summaryyyyyyyyyyyyyyy.ppt
1. Instructionset.pptfor engineering student
Programming-8085 programming, description and base model.ppt
Real Time Embedded System
Lecture_4__8051_Instruction_Set__Rv01.ppt
Assembler
Assembler

More from teknik komputer ui (20)

PDF
PDF
PDF
PDF
PDF
PDF
PDF
The cisco networking academy net riders indonesia 2010 competition
DOC
Rencana Proyek Divisi Komputer.doc
DOC
Salinan Research Paper
PDF
Chapter_1_Case_Study
PDF
Iins practice questions
PDF
S1 intr ftui
PPT
Exploration network chapter7
PPT
Exploration network chapter6
PPT
Exploration network chapter5
PPT
Exploration network chapter4
PPT
Exploration network chapter3
PPT
Exploration network chapter2
PPT
Exploration network chapter1
PPT
Exploration network chapter11
The cisco networking academy net riders indonesia 2010 competition
Rencana Proyek Divisi Komputer.doc
Salinan Research Paper
Chapter_1_Case_Study
Iins practice questions
S1 intr ftui
Exploration network chapter7
Exploration network chapter6
Exploration network chapter5
Exploration network chapter4
Exploration network chapter3
Exploration network chapter2
Exploration network chapter1
Exploration network chapter11

Chapter6-mikroprocessor

  • 1. Program Control Instructions A Course in Microprocessor Electrical Engineering Dept. University of Indonesia
  • 2. The Jump Group Jump (JMP) allows the programmer to skip sections of a program and branch to any part of the memory for the next instruction A Conditional Jump allows the programmer to make decisions based upon numerical test Unconditional Jump ( fig.6.1 ) Short Jump a 2-byte instruction that allows jumps or branches to memory locations within +127 and -128 bytes from the address following the jump is called relative jump
  • 3. The Jump Group (cont’d) the jump address is not stored with the opcode but a distance or displacement follows the opcode See fig.6.2 and study example 6.1 Near Jump It passes control to an instruction in the current code segment located within 32K bytes from the near jump The near jump is relocatable known as relative jump See fig.6.3 and study example 6.2 Far Jump It obtains new segment and offset address to accomplish the jump ( fig.6.4 and example 6.3 )
  • 4. The Jump Group (cont’d) Jumps with Register Operands known as indirect jump the address of the jump is in the register specified by the jump instruction (i.e., the contents of the register are transferred directly into the instruction pointer) Study example 6.4 Indirect Jump Using an Index It uses the [] form of addressing to directly access the jump table The JMP Table [SI] instruction ( example 6.5 ) points to a jump address stored at the code segment offset location addressed by SI
  • 5. The Jump Group (cont’d) Conditional Jump and Conditional Sets The conditional jump instructions test the following flag bits: sign (S), zero (Z), carry (C), parity (P), and overflow (O) --- see Table 6.1 if the condition under test is true, a branch to the label associated with the jump instruction occurs Otherwise, the next sequential step in the program executes The conditional jump instructions all test flag bits, except for the JCXZ (jump if CX=0) and JECXZ (jump if ECX=0) (study the example 6.6 ) See also Table 6.2 for the conditional set instruction
  • 6. The Jump Group (cont’d) Loop It is a combination of a decrement CX and JNZ conditional jump Example 6.7 shows how to add data in a block of memory with data in another block of memory Conditional Loops LOOPE (loop while equal) jumps if CX != 0 while an equal condition exists (the same as LOOPZ) LOOPNE (loop while not equal) jumps if CX != 0 while a not-equal condition exists (LOOPNZ)
  • 7. Controlling the Flow of an Assembly Language Program It is much easier to use the assembly language statements .IF., .ELSE., .ELSEIF., and .ENDIF. (study ex. 6.8 , 6.9 , 6.10 and Table 6.3 ) DO-WHILE Loops Pair: .WHILE and .ENDW Study example 6.11 , 6.12, and 6.13 REPEAT-UNTIL Loops Pair: .REPEAT and .UNTIL Study Example 6.14 and 6.15
  • 8. Procedures A procedure is a group of instructions that usually performs one task reusable - takes small amount of time use stack - can be NEAR or FAR Pair: PROC - ENDP (study example 6.16 ) CALL It transfers the flow of the program to the procedure CALLs with Register Operands E.g., CALL BX (example 6.17)
  • 9. Procedures (cont’d) CALLs with Indirect Memory Address useful whenever different subroutines need to be chosen from a program (see Example 6.18) RET It removes either a 16-bit (or 32-bit) number from the stack and places it into IP (and CS) the new location (IP and CS:IP) is the address of the next instruction that immediately follows the most recent CALL to a procedure ( Fig. 6.8 ) Study Example 6.19
  • 10. Introduction to Interrupt An Interrupt is either a hardware-generated CALL (externally derived from a hardware signal) or a software-generated CALL(internally derived of the execution of an instruction or by some other internal event) Interrupt Vectors An interrupt vector is a 4-byte number stored in the first 1,024 bytes of memory (in the real mode) The vector table is replaced by an interrupt descriptor table that uses 8-byte descriptors to describe each of the interrupts There are 256 different interrupt vectors; each vector contains an address of an interrupt service procedure
  • 11. Introduction to Interrupt (cont’d) Interrupt Instructions INT, INTO, and INT 3 INTs 256 software interrupt (INT) available Whenever a software interrupt executes, it: pushes the flags onto the stack clears the T and I flag bits pushes CS onto the stack fetches the new value for IP/EIP from the vector jump to the new location (CS:IP/EIP)
  • 12. Introduction to Interrupt (cont’d) IRET/IRETD Used only with software or hardware interrupt service procedure The IRET instruction will: pop stack data back into the IP pop stack data back into CS pop stack data back into the flag register INT 3 A special software interrupt designed to be used as a breakpoint It is common to insert an INT 3 instruction in software to interrupt or break the flow of the software
  • 13. Introduction to Interrupt (cont’d) INTO Interrupt on overflow is a conditional software interrupt that tests the overflow flag (O) if O = 0 the INTO instruction performs no operation if O = 1 an INTO instruction executes It appears in software that adds or subtracts signed binary numbers --> INTO detects the overflow condition An Interrupt Service Procedure (Ex. 6.20) The main difference between this procedure and a normal far procedure is that it ends with the IRET instruction instead of the RET instruction, and the contents of the flag register are saved on the stack
  • 14. Introduction to Interrupt (cont’d) Interrupt Control The set interrupt flag instruction (STI) enables the INTR pin The clear interrupt flag instruction (CLI) disables the INTR pin Interrupts in the Personal Computer See Table 6.5
  • 15. Machine Control and Miscellanous Instructions These instructions provide control of the carry bit, sample the BUSY/TEST pin, and perform various other functions Controlling the Carry Flag Bit There are three instructions that control the contents of the carry flag: STC (set carry), CLC (clear carry) and CMC (complement carry) WAIT The WAIT instruction monitors the hardware BUSY/TEST pins
  • 16. Machine Control and Miscellanous Instructions (cont’d) HLT The halt instruction that stops the execution of software Three ways of to exit a halt: by an interrupt, by a hardware reset, or during DMA operation NOP It performs no operation (useful for delaying the operation)
  • 17.  
  • 18.  
  • 19.  
  • 20. 0000 33 DB XOR BX,BX 0002 B8 0001 START: MOV AX,1 0005 03 C3 ADD AX,BX 0007 EB 17 JMP SHORT NEXT   0020 8B D8 NEXT : MOV BX,AX 0022 E8 DE JMP START Example 6.1 0000 33 DB XOR BX,BX 0002 B8 0001 START: MOV AX,1 0005 03 C3 ADD AX,BX 0007 E9 0200 R JMP NEXT   0020 8B D8 NEXT : MOV BX,AX 0022 E9 0002 R JMP START Example 6.2
  • 21. Example 6.3   EXTRN UP : FAR 0000 33 DB XOR BX,BX 0002 B8 0001 START: MOV AX,1 0005 03 C3 ADD AX,BX 0007 E9 0200 R JMP NEXT   0020 8B D8 NEXT : MOV BX,AX 0022 E9 0002 ---- R JMP FAR PTR START   0207 EA 0000 ---- E JMP UP  
  • 22.   ;A program that reads 1, 2 or 3 from the keyboard ;if 1, 2 or 3 is typed , a 1, 2 or 3 is displayed ; .MODEL SMALL ;select small model 0000 .DATA start of data segment 0000 0030 R TABLE DW ONE ;define lookup table 0002 0034 R DW TWO 0004 0038 R DW THREE 0000 .CODE start code segment STARTUP ;start of program 0017 TOP: 0017 B4 01 MOV AH,1 ;read key into AL 0019 CD 21 INT 21H   001B 2C 31 SUB AL,31H ;convert to biner 001D 72 F8 JB TOP ;if below ‘1’ typed 001F 3C 02 CMP AL,2 0021 77 F4 JA TOP ;if above ‘3’ typed   0023 B4 00 MOV AH,00H ;double to 0, 2 or 4 0025 03 C0 ADD AX,AX 0027 BE 0000 R MOV SI,OFFSET TABLE ;address lookup table 002A 03 F0 ADD SI,AX ;form lookup address 002C 8B 04 MOV AX,[SI] ;get ONE, TWO or THREE 002E FF E0 JMP AX ;jump address 0030 ONE: 0030 B2 31 MOV DL,’1’ ;load ‘1’ for display 0032 EB 06 JMP BOT ;go display ‘1’ 0034 TWO: 0034 B2 32 MOV DL,’2’ ;load ‘2’ for display 0036 EB 02 JMP BOT ;go display ‘2’ 0038 THREE: 0038 B2 33 MOV DL,’3’ ;load ‘3’ for display 003A BOT: 003A B4 02 MOV AH,2 ;display number 003C CD 21 INT 21H .EXIT ;exit to DOS END ;end of file Example 6.4
  • 23. Example 6.5   .MODEL SMALL ;select small model 0000 .DATA ;start of data segment 0000 0030 R TABLE DW ONE ;define lookup table 0002 0034 R DW TWO 0004 0038 R DW THREE 0000 .CODE ;start code segment .STARTUP ;start of program 0017 TOP: 0017 B4 01 MOV AH,1 ;read key into AL 0019 CD 21 INT 21H   001B 2C 31 SUB AL,31H ;convert to biner 001D 72 F8 JB TOP ;if below ‘1’ typed 001F 3C 02 CMP AL,2 0021 77 F4 JA TOP ;if above ‘3’ typed 0023 B4 00 MOV AH,0 ;calculate table address 0025 03 C0 ADD AX,AX 0027 03 F0 ADD SI,AX 0029 FF A4 0000 R JMP TABLE [SI] ;jump to ONE, TWO or THREE 002D ONE: 002D B2 31 MOV DL,’1’ ;load DL with ‘1’ 002F EB 06 JMP BOT 0031 TWO: 0031 B2 32 MOV DL,’2’ ;load DL with ‘2’ 0033 EB 02 JMP BOT 0035 THREE: 0035 B2 33 MOV DL,’3’ ;load DL with‘3’ 0037 BOT: 0037 B4 02 MOV AH,2 ;display ONE, Two or THREE 0039 CD 21 INT 21H .EXIT ;exit to DOS END ;end of file  
  • 24. Example 6.6 ;A procedure that searches a table of 100 bytes for 0AH ;The address, TABLE, is transferred to the procedure ;through the SI register ; 0017 SCAN PROC NEAR 0017 B9 0064 MOV CX,100 ;load count of 100 001A B0 0A MOV AL,0AH ;load AL with 0AH 001C FC CLD ;select increment 001D F2/AE REPNE JMP NEXT ;test 100 bytes fir 0AH 001F F9 STC ;set carry for not found 0020 F3 01 JCXZ NOT_FOUND ;if not found 0022 F8 CLC ;clear carry if found   0023 NOT_FOUND:   0023 C3 RET ;return from procedure   0024 SCAN ENDP
  • 25. Example 6.7 ;A program that sums the contens of BLOCK1 and BLOCK2 ;and stores the result over top of data in BLOCK2 ;through the SI register ; .MODEL SMALL ;select small model 0000 .DATA ;start of data segment 0000 0064 [ BLOCK1 DW 100 DUP (?) ;100 bytes for BLOCK1 0000 ] 00C8 0064 [ BLOCK2 DW 100 DUP (?) ;100 bytes for BLOCK2 0000 ] 0000 .CODE ;start of code segment .STARTUP ;start of program 0017 8C D8 MOV AX,DS ;overlap DS and ES 0019 8E C0 MOV ES,AX 001B FC CLD ;select increment 001C B9 0064 MOV CX,100 ;load count 100 001F BE 0000 R MOV SI,OFFSET BLOCK1 ;address BLOCK1 0022 BF 0000 R MOV DI,OFFSET BLOCK2 ;address BLOCK2 0025 L1: 0025 AD LODSW ;load AX with BLOCK1 0026 26:03 05 ADD AX,ES:[DI] ;add BLOCK2 data to AX 0029 AB STOSW ;store sum in BLOCK2 002A E2 F9 LOOP L1 ;repeat 100 times .EXIT ;exit to DOS END ;end file
  • 26. ; Inti Program Sequence MOV AH,30H INT 21 H .IF AL<3 && AH<30 MOV AH,4CH INT 21H .ENDIF Example 6.8(a) Example 6.8(b) ; Diagram file bahasa Mesin pada contoh 6.8 (a) ; 0000 B4 30 MOV AH,30H 0002 CD 21 INT 21H .IF AL<3 && AH<30 0004 3C 03 * CMP AL,003H 0006 73 09 * JAE @c0001 0008 80 FC 1E* CMP AH,01EH 000B 73 04 * JAE @c0001 000D B4 4C MOV AH,4CH 000F CD 21 INT 21H .ENDIF 0011 * @C0001:
  • 28. Example 6.10 ; Program yang membaca sebuah key dan menyimpan dalam Hexadecimal ; Nilai pada memori lokasdi TEMP.   .Mode Small : Pilih model SMALL 0000 . Data : Memulai data segmen 0000 00 TEMP DB? : Define TEMP 0000 .CODE : Awal Code segment STARTUP : Start program 0017 B4 01 MOV AH,1 : Pembacaan key 0019 CD 21 INT 21H . IF AL>=’a’ && AL<=’f’ : Bila dibagian sisi bawah 0023 2C 57 SUB AL,57H .ELSEIF AL>=’A’ && AL<=’F’ : bila bagian sisi atas 002F 2C 37 .ELSE : Hal lain 0033 2C 30 . SUB AL,30H .ENDIF A2 0000 R MOV TEMP, AL .EXIT : Keluar DOS END : Akhir file
  • 29.  
  • 30. Example 6-16 0000 SUMS PROC NEAR 0000 03 C3 ADD AX,BX 0002 03 C1 ADD AX,CX 0004 03 C2 ADD AX,DX 0006 C3 RET 0007 SUMS ENDP 0007 SUMS1 PROC FAR 0007 03 C3 ADD AX,BX 0009 03 C1 ADD AX,CX
  • 31.  
  • 32.  
  • 33.