Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.239.148] |
|
Сообщ.
#1
,
|
|
|
В ассемблере я полный чайник. Начал учить, нифига не получается.
Захотел написать на экран строку напрямую через память без int'ов. Потом дополнил очисткой и ожиданием нажатия клавиши. Помогите кто может, почему нормально моя строка не выводится assume es: code, cs: code org 100h code segment string db "HELLO!" str_ln = $-string main: mov AX, 0B800h mov ES,AX mov CX,str_ln mov SI,0 mov DH, 10h @@one: mov DL, string[SI] ; Почему вместо буквы с индексом SI у меня какая-то ; билеберда на экране mov ES:[SI],DX ; почему когда пишу 0B800h - не работает, хотя отладчик ; показовает в ES значение 0B800h inc SI inc SI dec CX jnz @@one mov BX, 6 mov CX, 3992 @@two: inc BX inc BX mov byte ptr ES:[BX],' ' mov byte ptr ES:[BX+1],00h dec CX dec CX jnz @@two mov AH,0 int 16h mov AH, 4Ch mov AL,00h int 21h code ends stk segment stack stk ends end main |
Сообщ.
#2
,
|
|
|
Немножко модифицировал прогу, но почему-то обратиться к элементу из массива символов по индексу не удается
assume es: code, cs: code code segment main: mov AX, 0B800h mov DS,AX jmp short res string db "HELLO!" str_ln = $-string res: mov BX, offset string mov DI, 0 mov CX, str_ln next: mov dl, [BX][DI] ; Вот тут что-то не идет!!! mov byte ptr [DI], dl mov byte ptr [DI+1], 02h add DI, 2 loop next ; Ждем нажатия клавиши mov AH,0 int 16h ; Выход в дос mov AX, 4C00h int 21h code ends stk segment stack db 256 dup (?) stk ends end main Помогите плиз. |
Сообщ.
#3
,
|
|
|
Мда, оригинально... mov dl,[BX][DI] у тебя не будет работать, во-первых, потому, что ты читаешь из сегмента ds=B800h, а не из cs, где у тебя строка, а во-вторых, ты увеличиваешь di сразу на два, поэтому читать будешь только каждый второй байт.
.MODEL Tiny .CODE ORG 100h SMART LOCALS Start: mov ax,0B800h mov es,ax xor di,di lea si,String mov cx,lString mov ah,14 ; Цвет cld @@Repeat: lodsb stosw loop @@Repeat xor ah,ah int 16h int 20h String db 'Hello!' lString = $-String END Start |