Массив: на входе принимается двухмерный массив 4х7, а выводит только две первые строки - Assembler
Формулировка задачи:
Ребят, выручайте. Нужно написать com-программу, которая на входе принимает ведённый двухмерный массив 4х7, а выводит только две(2) первые строки. (TASM)
П.С. Не ругайте только . Я больше по Веб, а в ассемблере для меня пока всё уж слишком тяжело. Нашел на форуме несколько похожих исходников и пытался их переделать. Результат один и тот же - ломается DosBox или выводятся непонятные символы(скорее всего это он меня просто посылает куда подальше из-за моих кривых рук)
Надеюсь на Ваше понимание
Решение задачи: «Массив: на входе принимается двухмерный массив 4х7, а выводит только две первые строки»
textual
Листинг программы
model tiny .code org 100h maxX equ 7 maxY equ 4 outY equ 2 start: mov cx,maxY xor bx,bx inpR: push cx mov cx,maxX xor di,di inpC: call inNum or ah,ah jnz inpC mov Massiv[bx][di],al inc di loop inpC add bx,maxX pop cx loop inpR ; mov ah,9 lea dx,dbRes int 21h ; mov cx,outY xor bx,bx outR: push cx mov al,10 int 29h mov al,13 int 29h mov cx,maxX xor di,di outC: mov al,massiv[bx][di] cbw call outNum inc di loop outC add bx,maxX pop cx loop outR ret; ; inNum proc push bx push cx push di mov ax,bx mov bx,maxX xor dx,dx div bx inc al add al,'0' mov dbRow,al mov ax,di inc al add al,'0' mov dbCol,al mov ah,9 lea dx,dbEnter int 21h xor si,si xor di,di mov bx,10 IN1: xor ah,ah int 16h cmp al,13 jz IN3 cmp al,'-' jz IN2 cmp al,'0' jb IN1 cmp al,'9' ja IN1 int 29h and ax,0fh xchg di,ax xor dx,dx mul bx test al,80h jz INE shl ax,1 INE: add di,ax jmp short IN1 IN2: or di,di jnz IN1 inc si int 29h jmp IN1 IN3: mov ax,di or si,si jz IN4 neg al IN4: pop di pop cx pop bx ret inNum endp ; outNum proc push bx push cx push di xor si,si test ax,8000h jz ON1 inc si neg ax ON1: mov bx,10 xor cx,cx ON2: xor dx,dx div bx push dx inc cx or ax,ax jnz ON2 or si,si jz ON3 mov al,'-'-'0' push ax inc cx ON3: mov al,' '-'0' ON4: push ax inc cx cmp cx,8 jb ON4 ON5: pop ax add al,'0' int 29h loop ON5 pop di pop cx pop bx ret ; outNum endp dbRes db 10,13,'Result:$' dbEnter db 10,13,'Enter element [' dbRow db ? db ',' dbCol db ? db ']:=$' massiv db MaxX*MaxY dup(?) end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д