Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 14

Написать программу, которая сравнивает два числа

14.04.2012, 16:45. Показов 3925. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа легкая, но очень нужно ее сейчас срочно сделать(((
Написать программу, которая сравнивает два числа и ...
y= a+x, если x>a
y= 2a-x, если x<=a

то есть вначале нужно сравнить x и a и потом вычислить x. спасайте(((
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.04.2012, 16:45
Ответы с готовыми решениями:

Написать программу,которая сравнивает два числа
Разработать программные модули для решения задачи,используя предложение if. Написать программу,которая сравнивает два введеных с клавиатуры...

Написать программу, которая сравнивает два введенных с клавиатуры числа
Помогите решить пожалуйста) Написать программу, которая сравнивает два введенных с клавиатуры числа. Программа должна указать, какое...

Написать программу, которая сравнивает два введенных с клавиатуры числа
Написать программу, которая сравнивает два введенных с клавиатуры числа. Программа должна указать, какое из чисел больше, или, если числа...

11
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
14.04.2012, 17:18
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CSEG segment
org 100h
 
 
start:
 
    mov bx,4 ; x
    mov dx,5 ; a
    
    cmp bx,dx
    ja M1
    mov ax,2
    mul dx
    sub ax,bx
    jmp M2
M1: add bx,dx
    mov ax,bx
m2:                    ; результа в AX (y) 
    int 20h
 
CSEG ends
end start
2
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 14
14.04.2012, 21:29  [ТС]
спасибо) блин, правда забыл написать что пользователь вводит эти числа в консоли, а я нуб, я это не напишу(
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
15.04.2012, 18:16
Сразу надо говорить.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
CSEG segment
org 100h
 
start:
 
      mov ah,9
      mov dx,offset str1
      int 21h
 
      mov ah,0Ah
      mov dx,offset buf
      int 21h
      
      mov di,offset buf
      call StrToDec
      mov bx,ax
    
      mov ah,9
      mov dx,offset str2
      int 21h
    
      mov ah,0Ah
      mov dx,offset buf
      int 21h
 
      mov di,offset buf
      call StrToDec
      mov dx,ax
 
      mov bx,4 ; x
      mov dx,5 ; a
    
      cmp bx,dx
      ja M1
      mov ax,2
      mul dx
      sub ax,bx
      jmp M2
M1:   add bx,dx
      mov ax,bx
M2:                    ; результа в AX (y) 
      int 20h
    
      str1 db 10,'x: ','$'
      str2 db 10,'a: ','$'
 
      buf  db 6,7 DUP(0)
 
 StrToDec proc
 
      push bx
      push dx
      sub ax,ax
      sub bx,bx
      sub cx,cx
      mov cl,byte ptr [di+1]
      add di,2
m_l:  mov bl,byte ptr [di]
      sub bl,'0'
      mov dx,10
      mul dx
      add ax,bx
      inc di
      loop m_l
      pop dx
      pop bx
      ret
 
 StrToDec endp
 
CSEG ends
end start
Добавлено через 17 минут
Ток вот эти строки убери. Я забыл.

mov bx,4 ; x
mov dx,5 ; a
2
 Аватар для Slav-0n
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 13
04.08.2012, 17:26
_lucius_, никак не могу понять, для чего в последнем коде нужна подпрограмма StrToDec? Что она делает? (распишите пожалуйста - более-менее подробно)
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
04.08.2012, 18:49
Интуитивно понятно, что StrToDec = string to decimal
переводит строку, представляющую из себя запись числа в десятичной системе счисления, в число.
0
 Аватар для Slav-0n
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 13
04.08.2012, 20:19
Kastaneda, да спасибо. Я теперь понял для чего она нужна.

Но при пошаговом рассмотрении данной подпрограммы получается какой-то бред чистой воды. Может она записана неправильно?
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
04.08.2012, 22:21
Slav-0n, всё правельно. Только, как я уже писал, там нужно пару строк убрать. Вот:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
CSEG segment
org 100h
 
start:
 
      mov ah,9
      mov dx,offset str1
      int 21h
 
      mov ah,0Ah
      mov dx,offset buf
      int 21h
      
      mov di,offset buf
      call StrToDec
      mov bx,ax
    
      mov ah,9
      mov dx,offset str2
      int 21h
    
      mov ah,0Ah
      mov dx,offset buf
      int 21h
 
      mov di,offset buf
      call StrToDec
      mov dx,ax
    
      cmp bx,dx
      ja M1
      mov ax,2
      mul dx
      sub ax,bx
      jmp M2
M1:   add bx,dx
      mov ax,bx
M2:                    ; результа в AX (y) 
      int 20h
    
      str1 db 10,'x: ','$'
      str2 db 10,'a: ','$'
 
      buf  db 6,7 DUP(0)
 
 StrToDec proc
 
      push bx
      push dx
      sub ax,ax
      sub bx,bx
      sub cx,cx
      mov cl,byte ptr [di+1]
      add di,2
m_l:  mov bl,byte ptr [di]
      sub bl,'0'
      mov dx,10
      mul dx
      add ax,bx
      inc di
      loop m_l
      pop dx
      pop bx
      ret
 
 StrToDec endp
 
CSEG ends
end start
Добавлено через 9 минут
Цитата Сообщение от Slav-0n Посмотреть сообщение
Но при пошаговом рассмотрении данной подпрограммы получается какой-то бред чистой воды.
Что именно не понятно?
0
 Аватар для Slav-0n
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 13
05.08.2012, 14:27
Цитата Сообщение от _lucius_ Посмотреть сообщение
там нужно пару строк убрать. Вот:
Вот результат работы этой программы:

Возможно где то и закралась ошибочка, но суть не в этом. Программа предлагает ввести значение для переменной Х (на скрине видно). А что вокруг за "мусор"? Можно ли от него избавиться?

_lucius_ вот что непонятно.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
StrToDec proc
 
      push bx                                     ;помещаем BX в стек
      push dx                                     ;помещаем DX в стек
      sub ax,ax                                  ; AX=0 так?
      sub bx,bx                                  ;здесь тоже регистр очищается
      sub cx,cx                                  ;и здесь
      mov cl,byte ptr [di+1]                  ;в CL копируем следующий за DI адрес
      add di,2                                     ;прибавляем к DI (а это значение с клавиатуры) двойку
m_l:  mov bl,byte ptr [di]                    ;в BL копируем адрес DI
      sub bl,'0'                                    ;отнимает от BL ноль? 
      mov dx,10                                  ;DX=10
      mul dx                                       ;AX*DX , а AX у нас равен нулю т.е. 0
      add ax,bx                                   ;AX+BX и там и там ноль, т.е. = 0
      inc di                                         ;уменьшаем DI на единицу
      loop m_l                                     ;цикл пока CX не будет равен 0 да?
                                                      ;Но весь цикл регистр CX не затрагивает
      pop dx                                       ;возвращаем из стека DX
      pop bx                                       ;возвращаем из стека BX
      ret                                            ;возврат из подпрограммы
 
 StrToDec endp
Я не понимаю что делает эта подпрограмма
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
05.08.2012, 16:14
Цитата Сообщение от Slav-0n Посмотреть сообщение
mov cl,byte ptr [di+1] ;в CL копируем следующий за DI адрес
Не адрес, а значение по адресу [di+1]. В DI смещенние на строку, в dos строке первый байт является длиной строки. Т.е. получается в cl мы кладём длину строки.

Цитата Сообщение от Slav-0n Посмотреть сообщение
add di,2 ;прибавляем к DI (а это значение с клавиатуры) двойку
После этой команды в di будет указатель непосредственно на введенные символы.

Цитата Сообщение от Slav-0n Посмотреть сообщение
mov bl,byte ptr [di] ;в BL копируем адрес DI
Опять же. Не адрес, а значение по этому адресу

Цитата Сообщение от Slav-0n Посмотреть сообщение
sub bl,'0' ;отнимает от BL ноль?
Нет. Отнимаем 30h. Я ведь в кавычках написал. Значит это код символа ноль.

Цитата Сообщение от Slav-0n Посмотреть сообщение
mul dx ;AX*DX , а AX у нас равен нулю т.е. 0
В первом проходе это так.

Цитата Сообщение от Slav-0n Посмотреть сообщение
add ax,bx ;AX+BX и там и там ноль, т.е. = 0
В BX может и не ноль.

Цитата Сообщение от Slav-0n Посмотреть сообщение
inc di ;уменьшаем DI на единицу
Наоборот увеличиваем!

Цитата Сообщение от Slav-0n Посмотреть сообщение
Я не понимаю что делает эта подпрограмма
Подпрограмма преобразует строку в число. Изучите работу программы под отладчиком.

Цитата Сообщение от Slav-0n Посмотреть сообщение
Вот результат работы этой программы
Это не exe программа, а com!

Цитата Сообщение от Slav-0n Посмотреть сообщение
А что вокруг за "мусор"? Можно ли от него избавиться?
Откомпилируйте как com.
1
 Аватар для Slav-0n
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 13
05.08.2012, 16:21
Цитата Сообщение от _lucius_ Посмотреть сообщение
Это не exe программа, а com!
В рот мне ноги. Когда в попыхах все учишь не все запоминается
Ладно буду дальше разбираться, спасибо.

П.С. А в .exe по-бырому никак не получится?
0
 Аватар для _lucius_
391 / 179 / 2
Регистрация: 14.03.2012
Сообщений: 443
05.08.2012, 16:45
Цитата Сообщение от Slav-0n Посмотреть сообщение
А в .exe по-бырому никак не получится?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
.8086
.MODEL small
.stack 100
 
.data
 
      str1 db 10,'x: ','$'
      str2 db 10,'a: ','$'
 
      buf  db 6,7 DUP(0)
      
.code
 
start: 
 
      mov dx,@stack
      mov ss,dx
      mov dx,@data
      mov ds,dx
 
      mov ah,9
      mov dx,offset str1
      int 21h
 
      mov ah,0Ah
      mov dx,offset buf
      int 21h
      
      mov di,offset buf
      call StrToDec
      mov bx,ax
    
      mov ah,9
      mov dx,offset str2
      int 21h
    
      mov ah,0Ah
      mov dx,offset buf
      int 21h
 
      mov di,offset buf
      call StrToDec
      mov dx,ax
    
      cmp bx,dx
      ja M1
      mov ax,2
      mul dx
      sub ax,bx
      jmp M2
M1:   add bx,dx
      mov ax,bx
M2:                    ; результа в AX (y) 
      mov ah,4Ch
      int 21h
 
 StrToDec proc
 
      push bx
      push dx
      sub ax,ax
      sub bx,bx
      sub cx,cx
      mov cl,byte ptr [di+1]
      add di,2
m_l:  mov bl,byte ptr [di]
      sub bl,'0'
      mov dx,10
      mul dx
      add ax,bx
      inc di
      loop m_l
      pop dx
      pop bx
      ret
 
 StrToDec endp
 
end start
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2012, 16:45
Помогаю со студенческими работами здесь

Написать программу, которая сравнивает два числа, введенных с клавиатуры
помогите решить задачу:scratch: а то давно не решал задачи на паскале все позабыл уже. 1) Написать программу, которая сравнивает два...

Написать программу, которая сравнивает два введенных с клавиатуры числа
Написать программу, которая сравнивает два введенных с клавиатуры числа. Программа должна указать, какое число является большим, и, если...

Написать программу,которая сравнивает два числа,введеных с клавиатуры
Написать программу,которая сравнивает два числа,введеных с клавиатуры..Программа должна указать какое число больше,или,если числа...

Написать программу, которая сравнивает два числа введенных с клавиатуры
15. Написать программу, которая сравнивает два числа введенных с клавиатуры. Программа должна вывести на экран сообщения в соответствии с...

Написать функцию, которая сравнивает два целых числа
Написать функцию, которая сравнивает два целых числа и возвращает результат сравнения в виде одного из знаков: &gt;,&lt; или = Ребят,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru