169 похожих чатов

.MODEL SMALL .STACK 100h .DATA array DW 12, 23,

34, 45, 56, 67, 78, 89
arraySize DW 8
choice DB ?
newline DB 13, 10, '$'

.CODE
start:
MOV AX, @DATA
MOV DS, AX

MOV CX, arraySize
mov SI, 0

menu:
mov ah, 09h
mov dx, offset menuMsg
int 21h

mov ah, 01h
int 21h
sub al, '0'
mov choice, al

cmp al, '1'
je forward_line
cmp al, '2'
je reverse_line
cmp al, '3'
je forward_column
cmp al, '4'
je reverse_column
cmp al, '5'
je clear_screen
cmp al, '6'
je exit_program
jmp menu

forward_line:
call print_line
jmp menu

reverse_line:
call print_reverse_line
jmp menu

forward_column:
call print_column
jmp menu

reverse_column:
call print_reverse_column
jmp menu

clear_screen:
mov ah, 06h
mov al, 0
mov bh, 07h
mov cx, 0
mov dx, 184Fh
int 10h
jmp menu

exit_program:
MOV AH, 4Ch
INT 21h

print_line:
mov SI, 0
print_loop:
mov ax, array[SI]
call print_num
add SI, 2
loop print_loop
ret

print_reverse_line:
MOV SI, OFFSET array
ADD SI, (arraySize - 1) * 2 ; ?????????? ????????? ?? ????????? ??????? ???????
print_reverse_loop:
MOV AX, [SI]
CALL print_num
SUB SI, 2
CMP SI, OFFSET array ; ?????????, ???????? ?? ?????? ???????
JAE print_reverse_loop
RET


print_column:
mov CX, arraySize
mov SI, 0
print_column_loop:
mov ax, array[SI]
call print_num
call print_newline
add SI, 2
loop print_column_loop
ret

print_reverse_column:
MOV SI, OFFSET array
ADD SI, (arraySize - 1) * 2 ; ?????????? ????????? ?? ????????? ??????? ???????
print_reverse_column_loop:
MOV AX, [SI]
CALL print_num
CALL print_newline
SUB SI, 2
LOOP print_reverse_column_loop
RET

print_num:
MOV CX, 10
DIV CX ; Делим AX на 10
ADD DL, '0' ; Преобразуем полученное число в символ
DEC SI ; Корректируем указатель на 1 назад для записи символа в нужное место
MOV [SI], DL ; Сохраняем символ в массив или выводим на экран
MOV DL, AH ; Помещаем остаток от деления в DL для следующего деления
ADD DL, '0' ; Преобразуем остаток от деления в символ
DEC SI ; Корректируем указатель на 1 назад
MOV [SI], DL ; Сохраняем символ остатка
RET


print_newline:
mov dx, offset newline
mov ah, 09h
int 21h
ret

menuMsg DB 13, 10, "Choose an option:", 13, 10
DB "1. Print in forward line", 13, 10
DB "2. Print in reverse line", 13, 10
DB "3. Print in forward column", 13, 10
DB "4. Print in reverse column", 13, 10
DB "5. Clear Screen", 13, 10
DB "6. Exit Program", 13, 10, '$'

END start

1 ответов

111 просмотров

Это чат гпт?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта