Читайте также:
|
|
codes SEGMENT para 'code'
assume cs:codes,ds:codes,es:codes,ss:codes
org 100h
main:
jmp begin
str1 db 10,?,10 dup (?)
mes db "Введите число: ","$"
newline db 13,10,'$'
begin:
mov ah,09h;выводим приглашение
lea dx,mes
int 21h
mov ah,0ah;вводим строку
lea dx,str1
int 21h
mov ah,09h;переход на новую строку
lea dx,newline
int 21h
mov cl,str1+2;вычисляем сумму 1 и второго символа
sub cl,30h
xor bx,bx
mov bl,str1+1
dec bx
add cl,str1+2[bx]
sub cl,30h
cmp cl,10;если сумма больше 10 выводим сначала '1'
jb prod;затем сумму-10 (сумма всегда маньше 20)
mov dl,'1'
mov ah,02h
int 21h
sub cl,10
prod:
mov dl,cl
add dl,30h
mov ah,02h
int 21h
mov ah,4ch
int 21h
codes ends
end main
Напишите программу, запрашивающую у оператора строку из pусских букв, а затем выводящую ее на экран, предварительно изменив строчные буквы на заглавные, а заглавные - на стpочные. Выполните трассировку программы.
codesg segment para 'code'
assume cs:codesg, ds:codesg, ss:codesg, es:codesg
org 100h
begin:
jmp start
message db 'Vvedite stroku: ','$'
string label byte
symb db 80
real db?;
str1 db 80 dup ('$');
start: mov dh, 0
mov dl, 0
mov bh, 00
mov ah, 02h
int 10h
mov ah, 09h
lea dx, message
int 21h
lea dx, string
mov ah, 0ah
int 21h
mov dh, 1
mov dl, 0
mov bh, 00
mov ah, 02h
int 10h
xor cx,cx
xor dx,dx
mov bx,0
mov cl,real
l1:mov dl,str1[bx]
test dl,00100000b
jz m1
jnz m2
k1:mov ah,02h
int 21h
inc bx
loop l1
mov dh, 2
mov dl, 0
mov bh, 00
mov ah, 02h
int 10h
mov ah, 09h
lea dx,str1
int 21h
mov ah,04ch
int 21h
m1:or dl,00100000b
jmp k1
m2:and dl,11011111b
jmp k1
codesg ends
end begin
Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран, предварительно изменив заглавные английские буквы на строчные. Выполните трассировку программы.
.MODEL tiny
.DATA
Text db 'Input string:$'
Input LABEL BYTE
Max db 60
Real db?
Buffer db 61 DUP('$'),'$'
.CODE
ORG 100h
Main PROC
LEA dx, Text
MOV ah, 9h
INT 21h
LEA dx, Input
MOV ah, 0ah
INT 21h
CALL Convert
MOV ah, 02h;переход на новую строку
MOV dl, 0ah
INT 21h
MOV ah, 02h
MOV dl, 0dh
INT 21h
LEA dx, Buffer;выводим готовую строку на экран
MOV ah, 9h
INT 21h
MOV ah, 8h
INT 21h
MOV ah, 4ch
INT 21h
Main ENDP
Convert PROC
MOV cl, Real
MOV ch, 0
MOV bx, 0;индекс в массиве
Start:
MOV ah, DS:[Buffer+bx];выбор символа из массива
CMP ah, 65;если меньше 65 - пропускаем
JB Finish
CMP ah, 90;если больше 90 - пропускаем
JA Finish
OR ah, 00100000b;выставляем 5 бит
MOV DS:[Buffer+bx], ah
Finish:
INC bx
LOOP Start
RET
Convert ENDP
END Main
Дата добавления: 2015-08-17; просмотров: 96 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран. Выполните трассировку программы. | | | Напишите программу, запрашивающую у оператора строку, а затем выводящую каждое слово в отдельной строке. Выполните трассировку программы. |