Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.9.146] |
|
Сообщ.
#1
,
|
|
|
ребят,нужна помощь
нужно вывести матрицу вида AA AB AC AD BA BB BC BD ... DA DB DC DD вот прога, но работает не совсем так как надо.. где ошибка? use16 org 100h mov ah,02h mov dl,65 mov al,65 mov cx,4 metka1: mov bx,cx mov cx,4 metka2: int 21h mov dh,dl mov bl,al mov dh,dl mov dl,al int 21h inc al mov dl,32 int 21h mov dl,dh loop metka2 mov dh,dl mov dl,13 int 21h mov dl,10 int 21h mov dl,dh inc dl mov cx,bx loop metka1 mov ah,09h mov dx,press int 21h mov ah,08h int 21h mov ax,4C00h int 21h ;__________________________________________________ press db 13,10,'Press any key...$' |
Сообщ.
#2
,
|
|
|
Цитата Chaynik @ Наверное тут: вы в BX (по сути, в BL) храните номер строки, но во внутреннем цикле metka2..loop_Metka2 портите это значение командой "mov bl,al". где ошибка? |
Сообщ.
#3
,
|
|
|
Цитата Славян @ Наверное тут: вы в BX (по сути, в BL) храните номер строки, но во внутреннем цикле metka2..loop_Metka2 портите это значение командой "mov bl,al". а как же мне сохранить значение al, что б на след строке опять начиналось с А? |
Сообщ.
#4
,
|
|
|
Цитата Chaynik @ Ещё есть SI и DI. а как же мне сохранить значение al, что б на след строке опять начиналось с А? |
Сообщ.
#5
,
|
|
|
Славян
Прикреплённый файл68__90__.png (12,21 Кбайт, скачиваний: 667) |
Сообщ.
#6
,
|
|
|
Я имел ввиду, что вы бы вместо BX могли использовать SI или DI там, где напряг с нужностью BX:
metka1: mov SI, cx ... mov cx, SI loop metka1 |
Сообщ.
#7
,
|
|
|
Славян, ну вот..
use16 org 100h mov ah,02h mov dl,65 mov al,65 mov cx,4 metka1: mov si,cx mov cx,4 metka2: int 21h mov dh,dl int 21h inc bh mov dl,32 int 21h mov dl,dh loop metka2 mov dh,dl mov dl,13 int 21h mov dl,10 int 21h mov dl,dh inc dl mov cx,si loop metka1 mov ah,09h mov dx,press int 21h mov ah,08h int 21h mov ax,4C00h int 21h ;__________________________________________________ press db 13,10,'Press any key...$' Прикреплённый файл__________.png (16,31 Кбайт, скачиваний: 681) |
Сообщ.
#8
,
|
|
|
Можно так попробовать:
metka2: int 21h mov dh,dl sub DL, CL add DL, 4 ; по сути: вывод=DL+(4-CL) = DL+(0..3) int 21h ... xchg AL, DL add AL, 4 xchg AL, DL |
Сообщ.
#9
,
|
|
|
Цитата Chaynik @ metka2: int 21h mov dh,dl int 21h inc bh там не DH вместо BH ? |
Сообщ.
#10
,
|
|
|
Славян, опять не совсем то что нужно...
Прикреплённый файл__________.png (16,53 Кбайт, скачиваний: 620) |
Сообщ.
#11
,
|
|
|
Цитата Chaynik @ нужно вывести матрицу вида Сделал для NASM под системные вызовы *nix (ссылка): global _start section .data buf db ' ',0xa len equ $ - buf _start: mov dh,4 mov dl,4 rows: test dl,dl je exit mov al,'E' sub al,dl xor ebx,ebx cols: mov ah,'E' sub ah,dh mov [buf+ebx],al mov [buf+ebx+1],ah add ebx,3 dec dh cmp dh,0 jne cols mov dh,4 call print_line dec dl jmp rows print_line: push eax push ebx push ecx push edx mov edx,len mov ecx,buf mov ebx,1 mov eax,4 int 0x80 pop edx pop ecx pop ebx pop eax ret exit: mov eax, 01h xor ebx, ebx int 80h Под винду надо подумать малеха, просто на асме давно не кодил |
Сообщ.
#12
,
|
|
|
Вариант для виндовой консоли.
Ассемблер - FASM: format PE console include 'win32wxp.inc' .data buf TCHAR ' ' eol DW 13,10 dummy rd 1 handle DD ? .code start: invoke AllocConsole invoke GetStdHandle,STD_OUTPUT_HANDLE mov [handle],eax mov edx,0x404 rows: test dl,dl je exit mov al,'E' sub al,dl xor ebx,ebx cols: mov ah,'E' sub ah,dh mov byte[buf+ebx],al mov byte[buf+ebx+1],ah add ebx,3 dec dh cmp dh,0 jne cols mov dh,4 call print_line dec dl jmp rows print_line: push eax push ebx push ecx push edx invoke WriteConsoleA,[handle],buf,11,dummy,0 invoke WriteConsole,[handle],eol,2,dummy,0 pop edx pop ecx pop ebx pop eax ret exit: invoke Sleep,1 invoke ExitProcess,0 .end start |
Сообщ.
#13
,
|
|
|
Цитата Chaynik @ Эх, чайник-чайничек, ну доколдовали бы что-нибудь вида:опять не совсем то что нужно... metka2: int 21h mov dh,dl mov DL, 65+4 ; 'A'+4 sub DL, CL ; по сути: вывод='A'+(4-CL) = 'A'+(0..3) int 21h ... |
Сообщ.
#14
,
|
|
|
JoeUser, спасибо большое!!
Добавлено Славян, и вам спасибо) |
Сообщ.
#15
,
|
|
|
format PE console entry start include 'win32a.inc' section '.data' data readable writeable hex_print_format db '%X ', 0 end_line db 0x0A, 0 row dd 0 value dd 0xAA section '.code' code readable executable start: mov [row], dword 4 .put: cinvoke printf, hex_print_format, [value] inc [value] dec [row] jnz .put cmp [value], dword 0xDD jae .end add [value], dword (0x10 - 0x4) cinvoke printf, end_line jmp short start .end: cinvoke getch invoke ExitProcess, 0 section '.idata' import data readable library kernel,'kernel32.dll',\ msvcrt,'msvcrt.dll' import kernel,\ ExitProcess,'ExitProcess' import msvcrt,\ printf,'printf',\ getch,'_getch' |