Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2018, 16:43   #41
mishganmishg
Новичок
Джуниор
 
Регистрация: 14.08.2018
Сообщений: 62
По умолчанию

вопрос следующий почему мы функцию записываем в регистр ah? а подфункцию у этой функции в al?
mishganmishg вне форума Ответить с цитированием
Старый 14.08.2018, 16:44   #42
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Да хоть день назад. Как это связано с тем, что вы считаете, что если на листочке написать 100 км, то весь асфальт туда запихается...
p51x вне форума Ответить с цитированием
Старый 14.08.2018, 16:45   #43
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от mishganmishg Посмотреть сообщение
вопрос следующий почему мы функцию записываем в регистр ah? а подфункцию у этой функции в al?
Потому что такое АПИ у ДОСа.
p51x вне форума Ответить с цитированием
Старый 14.08.2018, 16:47   #44
mishganmishg
Новичок
Джуниор
 
Регистрация: 14.08.2018
Сообщений: 62
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Потому что такое АПИ у ДОСа.
что такое апи?
mishganmishg вне форума Ответить с цитированием
Старый 14.08.2018, 16:48   #45
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

https://ru.wikipedia.org/wiki/API
p51x вне форума Ответить с цитированием
Старый 14.08.2018, 16:57   #46
mishganmishg
Новичок
Джуниор
 
Регистрация: 14.08.2018
Сообщений: 62
По умолчанию

(01) CSEG segment
(02) assume CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG
(03) org 100h
(04) Start:
(05) mov ax,0B800h
(06) mov es,ax
(07) mov al,1
(08) mov ah,31
(09) mov cx,254
(10) Next_screen:
(11) mov di,0
(12) call Out_chars
(13) inc al
(14) loop Next_screen
(15) mov ah,10h
(16) int 16h
(17) int 20h
(18) Out_chars proc
(19) mov dx,cx
(20) mov cx,2000
(21) Next_face:
(22) mov es:[di],ax
(23) add di,2
(24) loop Next_face
(25) mov cx,dx
(26) ret
(27) Out_chars endp
(28) CSEG ends
(29) end Start
Строки (01)—(08), (15)—(17) и (28), (29) опускаем. Вопросов по ним быть не должно.
В строке (09) заносим в cx число 254, сообщающее, сколько раз будет выпол-няться основной цикл. Строки (10) и (14) — "голова" и "хвост" нашего основного цикла соответственно. Значение di будет меняться во вложенной процедуре, по-этому нам необходимо будет его постоянно аннулировать (строка (11)). В строке (12) вызываем процедуру, выводящую на экран символ, код которого находится в al (при первом проходе цикла это будет символ "рожица" с кодом 01). Все! Те-перь на экран будет выведен символ с кодом 01. При этом di будет равно 2001, по-этому нам и нужно его постоянно обнулять.
Далее увеличим на единицу код символа, который находится в al. Во второй раз al будет содержать 02 — тоже "рожица", но немного другого вида (строка (13)). Затем уменьшим счетчик на 1 и перейдем к заполнению экрана кодом 02 (строка (14)). И так далее. Всего 254 раза.
Теперь рассмотрим работу самой процедуры. В строке (19) сохраняем содержи-мое регистра cx (просто перенесем его в dx), т. к. он будет изменен во вложенном цикле ниже. Строки (21) и (24) — "голова" и "хвост" вложенного цикла, который будет выполняться 2000 раз (именно столько символов вмещается на экране в тек-
mishganmishg вне форума Ответить с цитированием
Старый 14.08.2018, 16:58   #47
mishganmishg
Новичок
Джуниор
 
Регистрация: 14.08.2018
Сообщений: 62
По умолчанию

Теперь рассмотрим работу самой процедуры. В строке (19) сохраняем содержи-мое регистра cx (просто перенесем его в dx), т. к. он будет изменен во вложенном цикле ниже.


а вот это важно здесь регистр меняется и чтоб его вернуть нужно его сохранить же
mishganmishg вне форума Ответить с цитированием
Старый 14.08.2018, 17:01   #48
mishganmishg
Новичок
Джуниор
 
Регистрация: 14.08.2018
Сообщений: 62
По умолчанию

тоесть из-за того что я меняю сам значение регистра мне его нужно сохранять?
mishganmishg вне форума Ответить с цитированием
Старый 14.08.2018, 17:03   #49
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А вы думаете пришельцы с альфа-центавры прилетят и вернуть значение назад?
p51x вне форума Ответить с цитированием
Старый 14.08.2018, 17:17   #50
mishganmishg
Новичок
Джуниор
 
Регистрация: 14.08.2018
Сообщений: 62
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А вы думаете пришельцы с альфа-центавры прилетят и вернуть значение назад?
альфа кассиопеии, какие книги еще посоветуете почитать?
mishganmishg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler, команда MOV OmegaBerkut Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 27.09.2015 20:44
PDP 11 - команда пересылки mov 27 27. почему это фатальная ошибка? 13xXx13 Помощь студентам 0 15.01.2012 23:34
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
команда MOV, проблемы fermat_c Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 18.04.2008 19:19
У меня вопрос про базы данных,а точнее про таблицы!!! Alexij Общие вопросы Delphi 1 13.04.2008 23:24