Beruflich Dokumente
Kultur Dokumente
.MODEL SMALL
.STACK 100H
.DATA
.CODE
MAIN PROC
MOV AH, 1
INT 21H
MOV CHAR, AL
MOV AH,2
MOV DL,CHAR
INT 21H
MOV AH, 1
INT 21H
MOV TEMP, AL
LEA DX, MSG4
MOV AH,9
INT 21H
MOV AH,2
MOV DL,TEMP
INT 21H
MAIN ENDP
END MAIN
Program 03:An Assembly program to read in two decimal inputs and print out the
smaller of the two, in decimal
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO COMPARE : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO COMPARE : $"
MSG3 DB 10,13,"SMALLER NUMBER IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV NUM1,AL
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV NUM2,AL
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AL,NUM1
CMP AL,NUM2
JG SECOND
FIRST: MOV AH,2
MOV DL,NUM1
INT 21H
JMP EXIT
SECOND: MOV AH,2
MOV DL,NUM2
INT 21H
EXIT: MOV AH,4CH
INT 21H
ENDS
END START
Program 04: An Assembly program to read in two decimal inputs and print out their
sum, in decimal
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"
MSG3 DB 10,13,"RESULT OF ADDITION IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM1,AL
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM2,AL
ADD AL,NUM1
MOV RESULT,AL
MOV AH,0
AAA
ADD AH,30H
ADD AL,30H
MOV BX,AX
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AH,2
MOV DL,BH
INT 21H
MOV AH,2
MOV DL,BL
INT 21H
MOV AH,4CH
INT 21H
ENDS
END START
NUM1 db ?
NUM2 db ?
NUM3 db ?
.CODE
MOV AH, 01
INT 21H
SUB AL, '0'
MOV BL, AL
MOV AH, 01
INT 21H
SUB AL, '0'
MOV CL, AL
MOV AH, 01
INT 21H
SUB AL, '0'
MOV DL, AL
MOV AH, 01
INT 21H
SUB AL, '0'
MOV DH, AL
; add
MOV AL, CL
MOV AH, BL
ADD AL, DH
AAA
ADD AH, DL
MOV NUM1, AL
ADD NUM1, '0'
IS_3DIGIT:
MOV AL, AH ; move value of ah to al
SUB AH, AH ; clear ah
ADD AL, 0 ; al + 0 = al (tens digit)
AAA ; move for addition
ADD AH, 0 ; ah + 0 + 1 = ah + 1 (hundreds digit)
MOV NUM2, AL
MOV NUM3, AH
ADD NUM2, '0'
ADD NUM3, '0'
; output sum
LEA DX, MSGC
MOV AH, 09h
INT 21h
MOV DL, NUM3
MOV AH, 02H
INT 21h
MOV DL, NUM2
MOV AH, 02H
INT 21h
JMP PRINT_LASTDIGIT
NOT_3DIGIT:
MOV NUM2, AH
ADD NUM2, '0'
; output sum
LEA DX, MSGC
MOV AH, 09h
INT 21h
MOV DL, NUM2
MOV AH, 02H
INT 21h
PRINT_LASTDIGIT:
MOV DL, NUM1
MOV AH, 02H
INT 21h
EXIT:
MOV AH, 4Ch
INT 21h
MAIN ENDP
END MAIN
Program 06: An Assembly program to read two decimal numbers, then multiply them
together and finally print out the result (in decimal )
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO MULTIPLY : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO MULTIPLY : $"
MSG3 DB 10,13,"RESULT OF MULTIPLICATION IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM1,AL
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV NUM2,AL
MUL NUM1
MOV RESULT,AL
AAM
ADD AH,30H
ADD AL,30H
MOV BX,AX
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AH,2
MOV DL,BH
INT 21H
MOV AH,2
MOV DL,BL
INT 21H
MOV AH,4CH
INT 21H
ENDS
END START