Добрый день!
В нижеописанное программе в строку s вводится символы, а затем они
должны быть выведены по 5 в ряд. Использую для вывода
прерывание Dos int21 c 02A в регистре Ah,т.е. вывожу посимвольно. Идея такая: определяю адрес строки
(и соответсвенно 1-го в ней символа, помещаю в dl переменную, по вычисленному адресу и накидываю еденицу туда,где находится текущий адрес(так как строка у меня байтовая), но ничего не работает,программа выдает ошибку Может я что-то с адресацией напутал?
Просьба помочь разобраться!
p.s. показываю только сегмент данных и сегмент кода.
.data
;; input
maxl db 30
actl db ?
s db 27 dup('$')
;; ----------------------------
;; enter
ent db 13,10,'$'
;; ----------------------
;; Output variable
adr dw ?
count dw ?
.code
; PROGRAM
;; Massiv INPUT
mov ah,0Ah
lea dx,maxl
int 21h
;; enter
mov ah,09h
lea dx,ent
int 21h
;; Massiv OUTPUT
lea ax,s ; determinig s offset
mov adr,ax ; saving string s DS:offset in adr var
mov bx,adr
mov ax,25
mov count,ax ; main_loop counter
main_loop:
mov cx,5 ; sub_loop counter
sub_loop:
mov ax,02h ; -------------------
mov dl,[bx] ; putting to dl current symbol
int 21h ; -------------------
add bx,1
dec count ; decrising main_loop counter
loop sub_loop ; repeating this operations for 5 times
;; enter
mov ah,09h
lea dx,ent
int 21h
;; --------------
mov ax,5 ; -----------------------------------
cmp count,ax ; checking main_loop counter
jns main_loop ; if count-5 >= then going to main_loop
;; Massiv OUTPUT end
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Проблема с выбором пунктов меню (2018)
- Форум Dos,assembler (2006)
- Форум Assembler (2019)
- Форум Assembler (2012)
- Форум assembler (2003)
- Форум GNU Assembly (2021)
- Форум Assembler рекурсия (2020)
- Форум Assembler messages (2016)
- Форум Assembler IDE4linux (2010)
- Форум assembler: wtf? (2016)