(Jump) (Loop) (Conditional jump) CMP CALL AND SAR/SHR TEST JMP NOT SAL/SHL Jnnn* OR RCR/ROR LOOP XOR RCL/ROL RETn * nnn, JNE JL
-128 127-32,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20
JMP titlea07jump (COM) using jump for looping.model small.code org 100h ;start at end of PSP a10main proc near mov ax,0 ;initialize ax mov bx,0 ; and bx to zero, mov cx,1 ; cx to 1 a20: add ax,1 ;increment ax add bx,ax ;add ax to bx shl cx,1 ;double cx jmp a20 ;jump to a20 label a10main endp end a10main [Label:] LOOP short address CX 1; 0, 0,
LOOP titlea07loop (COM) illustration of loop.model small.code org 100h a10main proc near mov ax,0 ;initialize ax and mov bx,0 ; bx to zero, mov dx,1 ; dx to 1 mov cx,8 ;initialize for a20: ; 8 loops inc ax ;increment ax add bx,ax ;add ax to bx shl dx,1 ;double dx loop a20 ;decrement cx, ; loop if nonzero mov ax,4c00h ;end processing int 21h a10main endp end a10main CMP [Label:] CMP register/memory,register/memory/immediate cmp je L10: dx,0 L10
[Label:] Jnnn short address DEC JNZ CX A20 : Above : Below : Equal, Zero JE/JZ ZF JNE/JNZ ZF JA/JNBE / CF, ZF JAE/JNB / CF JB/JNAE / CF JBE/JNA / ZF, CF
: Greater than : Less than : Equal, Zero JE/JZ ZF JNE/JNZ ZF JG/JNLE / OF, SF, ZF JGE/JNL / OF, SF JL/JNGE / OF, SF JLE/JNG / OF, SF, ZF JCXZ CX JC 1 CF JNC 0 CF JO OF 1 OF JNO OF 0 OF JP/JPE PF 1 PF JNP/JPO PF 0 PF JS SF 1 SF JNS SF 1 SF
CMP AL,BL JE EQUAL CMP AL,BH JE EQUAL CMP AL,CL JE EQUAL NOT_EQUAL: EQUAL: CMP AL,BL JNE NOT_EQUAL CMP AL,BH JNE NOT_EQUAL CMP AL,CL JNE NOT_EQUAL EQUAL: NOT_EQUAL:
(Procedure), PROC_NAME PROC FAR PROC_NAME ENDP CALL RETn [Label:] CALL procedure-name [Label:] RET[n] [immediate] n: N F Near Far RETN POP IP, SP 2 RETF POP IP CS, SP 4 n, PROC, procedure, (Near call, Far call) Immediate SP
.model small.stack 64.data ;---------------------------------------------.code a10main proc far call b10 ;call b10 ;... mov ax,4c00h ;end processing int 21h a10main endp ;--------------------------------------------- b10 proc near call c10 ;call c10 ;... ret ;return to caller b10 endp ;--------------------------------------------- c10 proc near ;... ret ;return to caller c10 endp ;--------------------------------------------- end a10main, SP=40H ( 64 ) 1. call b10, IP=3 ( ) b10 near procedure 3E 3F SP 2( 3EH), IP 03 00 2. Call c10, IP=000BH 3C 3D 3E 3F SP 2( 3CH), IP 0B 00 03 00
3. Procedure c10 return pop IP (IP=000BH) SP 2, 3EH 4. Procedure b10 return pop IP (IP=0003H) SP 2, 40H
: LEA BX,MULTICAND LEA SI,MULTIPLER CALL M30MULT M30MULT PROC NEAR MOV AX,[BX] MUL WORD PTR [SI] RET M30MULT ENDP :.386 PUSH OFFSET MULTICAND PUSH OFFSET MULTIPLER CALL M30MULT M30MULT PROC NEAR PUSH BP MOV BP,SP MOV BX,[BP+6] MOV DI,[BP+4] MOV AX,[BX] MUL WORD PTR [DI] POP BP RET 4 M30MULT ENDP
C C Adds(value_1, value2); Adds PUSH BP MOV BP,SP MOV DH,[BP+4] Old BP MOV DL,[BP+6] Return address value_1 POP BP RET value_2 BP+0 BP+2 BP+4 BP+6 [Label:] operation register/memory,register/memory/immediate OPERATIONS: AND OR XOR TEST NOT
AND 0 ( ), 0 : BL=0011 1010, CH=1010 0011 AND BL,0FH ; BL 0 ( ), 0(, 0, ZF=1) AND CH, 02H ; OR 1 ( ) : BL=0011 1010, CH=1010 0011 OR BL,CH ;BL=1011 1011 OR CH, CH ; CH=0, ZF=1;, ZF=0 ; CH 0
XOR (1 0,0 1; ) : BL=0011 1010 XOR BL,0FH ;BL=0011 0101 XOR CH, CH ;CH=0 TEST AND,, : TEST CX,0FFH TEST BL,01H TEST CL,11110000B
NOT [Label:] NOT register/memory : BL=0011 1010 NOT BL ;BL=1100 0101 : ASCII A: 41H (0100 0001),, Z: 5AH (0101 1010) a: 61H (0110 0001),, z: 7AH (0111 1010) 5; 0, 1, 0010 0000 XOR, 0010 0000 OR, 1101 1111 AND
title a07case (COM) change uppercase to lowercase.model small.code org 100h begin: jmp a10main ;-------------------------------------------------- coname db 'LASER-12 SYSTEMS', '$' ;-------------------------------------------------- a10main proc near lea bx,coname+1 ;1st char to change mov cx,15 ;no. of chars to change a20: mov ah,[bx] ;character from coname cmp ah,41h ;is it jb a30 ; uppercase cmp ah,5ah ; case ja a30 ; letter? xor ah,00100000b ;yes, convert mov [bx],ah ;restore in coname a30: inc bx ;set for next char loop a20 ;loop 15 times ;done, mov ah,9 ; display lea dx,coname ; coname int 21h mov ax,4c00h ;end processing int 21h a10main endp end begin : [Label:] SHR/SAR register/memory, CL/immediate SHR 0 CF SAR S CF
SHR/SAR ; MOV BH,10110111B ;(183) SHR BH,1 ;01011011 (91), CF=1 MOV CL,2 SHR BH,CL ;00010110 (22), CF=1 SHR BH,2 ;00000101 (5), CF=1 MOV BH,10110111B ;(-73) SAR BH,1 ;11011011 (-37), CF=1 MOV CL,2 SAR BH,CL ;11110110 (-10), CF=1 SAR BH,2 ;11111101 (-3), CF=1 : [Label:] SHL/SAL register/memory, CL/immediate SHL/SAL CF 0
SHL/SAL MOV BH,00000101B ;(5) SHL BH,1 ;00001010 (10), CF=0 MOV CL,2 SHL BH,CL ;00101000 (40), CF=0 SHL BH,2 ;10100000 (160), CF=0 : [Label:] ROR/RCR register/memory, CL/immediate ROR CF RCR CF
ROR/RCR ; MOV BH,10110111B ; ROR BH,1 ;11011011, CF=1 MOV CL,3 ROR BH,CL ;01111011, CF=0 ROR BH,3 ;01101111, CF=0 CLC ;CF=0 MOV BH,10110111B ; RCR BH,1 ;01011011, CF=1 MOV CL,3 RCR BH,CL ;11101011, CF=0 RCR BH,3 ;11011101, CF=0 : [Label:] ROL/RCL register/memory, CL/immediate ROL CF RCL CF
ROL/RCL ; MOV BH,10110111B ; ROL BH,1 ;01101111, CF=1 MOV CL,3 ROL BH,CL ;01111011, CF=1 ROL BH,3 ;11011011, CF=1 CLC ;CF=0 MOV BH,10110111B ; RCL BH,1 ;01101110, CF=1 MOV CL,3 RCL BH,CL ;01110101, CF=1 RCL BH,3 ;10101101, CF=1