Показать сообщение отдельно
tatu_cat_69
Добрый
Аватар для tatu_cat_69
Сообщения: 6,249
Регистрация: 28.09.2007
Откуда: Кострома-Ярославль
Старый пост, нажмите что бы добавить к себе блог 3 декабря 2010, 11:29
  #560 (ПС)
-Цитата от иксуй! Посмотреть сообщение
-Цитата от tatu_cat_69 Посмотреть сообщение
тут кто-нибдь шарит в ассемблере? а именно в тасме?
а в чём загвоздка?
да надо типа сравнить два числа однозначных. т.е. сделать проверку на дурака, чтобы не было ввода двузначныхх чисел. числа знаковые т.е. в пределах от -9 до 9.

Показать скрытый текст
STACKS SEGMENT PARA STACK 'STACK'
DB 512 DUP (?)
STACKS ENDS

DATA SEGMENT PARA 'DATA'

STR1 DB 'VVEDITE 1-oe znakovoe chislo $'
STR2 DB 'VVEDITE 2-oe znakovoe chislo $'
STR3 DB 'min chislo $'
chislo1 dw ?
chislo2 dw ?
BUF DB 20,?,20 DUP ('$')
buf2 db 20,?,20 dup ('$')

DATA ENDS

CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE,DSATA,SS:STACKS

entr PROC NEAR ;процедура перехода на новую строку
MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
RET
entr ENDP





MAIN PROC FAR;
MOV AX,DATA
MOV DS,AX
vvod_1:
;-----------------
MOV AH,9 ;код функции (вывод строки)
MOV DX,OFFSET STR1
INT 21H
;-----------------

CALL entr ; Переход на новую строку

MOV AH,0AH;
MOV Dx,OFFSET BUF; это работа с буфером, его заполняем строкой
mov chislo1,dx
INT 21H
MOv AX,0
MOV Al,BYTE PTR BUF+1 ;помещение длины строки в AX
cmp al,1
Ja otriz
cmp al,1
je polog

polog: cmp buf+2, 30h
jb vvod_1
cmp buf+2, 39h
ja vvod_1
jmp end_if
;cmp buf+2, 20h
;jnz vvod_1
otriz: cmp al,2
je otriz1
jmp vvod_1
otriz1: cmp buf+2, 2dh
jne vvod_1
cmp buf+3, 2dh
je vvod_1
jmp end_if
end_if:
CALL entr ; Переход на новую строку

;-----------------

vvod_2: ;-----------------
MOV AH,9 ;код функции (вывод строки)
MOV DX,OFFSET STR2
mov chislo1,dx
INT 21H
;-----------------

CALL entr ; Переход на новую строку

MOV AH,0AH;
MOV DX,OFFSET BUF; это работа с буфером, его заполняем строкой

INT 21H
MOv AX,0
MOV Al,BYTE PTR BUF+1 ;помещение длины строки в AX
cmp al,1
Ja otriz_11
cmp al,1
je polog_1

polog_1:
cmp buf+2, 30h
jb vvod_2
cmp buf+2, 39h
ja vvod_2
jmp end_if1
;cmp buf+2, 20h
;jnz vvod_2
otriz_11: cmp al,2
je otriz_21
jmp vvod_2
otriz_21:
cmp buf+2, 2dh
jne vvod_2
cmp buf+3, 2dh
je vvod_2
jmp end_if1
end_if1:
CALL entr ; Переход на новую строку
MOV AH,2 ;
MOV Dx,chislo1 ;Вывод на экран num1
ADD Dx,37h ;
INT 21h
CALL entr
MOV AH,9
MOV DX,OFFSET STR3 ;ВЫВОД СТРОКИ С ПОМОЩЬЮ Ф.9
INT 21H

mov ax,chislo2
cmp ax,[chislo1]
Jge proc_min_out

MOV AH,2
MOV DX,ax;ВЫВОД СТРОКИ С ПОМОЩЬЮ Ф.9
INT 21H
proc_min_out:
mov ax,chislo1
MOV AH,2
MOV DX,ax;ВЫВОД СТРОКИ С ПОМОЩЬЮ Ф.9
INT 21H
mov ah,4ch
int 21h


MAIN ENDP
CODE ENDS
END MAIN
END MAIN


сделал я защиту от дурака. но вот с выводом и проверкой я не знаю что делать

offline
Ответить с цитированием