1. Step through its execution to understand its current operation. 2. Modify the
ID: 3549993 • Letter: 1
Question
1. Step through its execution to understand its current operation.
2. Modify the program to include three procedures. The first should read text from the keyboard and store it in RAM. The second should convert any upper case characters in the stored text to lower case. The third should display the text on the VDU screen.
Pr PROGRAM:
Explanation / Answer
;Main
MOV BL,70 ;
CALL 10 ;
CALL 100; 100 is in hex
CALL 40 ;
HALT ;
; PROCEDURE TO READ IN TEXT
ORG 10 ;
PUSH AL ;
PUSH BL ;
PUSHF ;
Rep:
IN 00 ;
CMP AL,0D ;
JZ Stop ;
MOV [BL],AL ;
INC BL ;
JMP Rep ;
Stop:
MOV AL,0 ;
MOV [BL],AL ;
POPF ;
POP BL ;
POP AL ;
RET ;
;till here already given in ques
; A PROCEDURE TO DISPLAY TEXT ON THE SIMULATED SCREEN
ORG 40 ;
PUSH AL ;save register
PUSH BL ;save register
PUSHF ;save register
Rep1:
MOV AL,[BL] ;get the character
CMP AL,0 ;check if it is null
JZ Stop1 ;
OUT 01 ;display on port 01 assuming VDU is on 01
INC BL ;increment BL
JMP Rep1 ;
Stop1:
POPF ;restore register
POP BL ;restore register
POP AL ;restore register
RET ;
; CONVERT UPPER CASE TO LOWER CASE
ORG 100 ;
PUSH AL ;save register
PUSH BL ;save register
PUSHF ;save register
Rep2:
MOV AL,[BL] ;get the character
CMP AL,0 ;check if it is null
JZ Stop2 ;
CMP AL,61 ;compare ascii value with 'a'
JNC Next ;if already a lowercase
ADD Al,20 ;convert to lower case by adding 32 i.e 20 in hex
MOV [BL],AL ;store it back
Next:
INC BL ;
JMP Rep2 ;
Stop2:
POPF ;restore register
POP BL ;restore register
POP AL ;restore register
RET ;
END;
here we have used the fact that ASCII value of lower case is 32 more than upper case character
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.