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

Числовая ось, определить какая из точек расположена ближе к А

31.05.2018, 09:14. Показов 1492. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На числовой оси расположены три точки: A,B,C.
Определить какая из двух последних точек (B или C) расположена ближе к А,
и вывести эту точку и ее расстояние от точки А.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2018, 09:14
Ответы с готовыми решениями:

Определить, какая из двух точек (B или C) расположена ближе к A
На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту...

Определить, какая из двух точек (B или C) расположена ближе к точке A
На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту...

Определить, какая из точек В и С расположена ближе к А
написать программу в турбо паскаль на оси ОХ расположены три точки А В С определить какая из точек В и С расположена ближе к А

12
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8661 / 4495 / 1670
Регистрация: 01.02.2015
Сообщений: 13,908
Записей в блоге: 12
31.05.2018, 09:24
Лучший ответ Сообщение было отмечено ARTIDD как решение

Решение

Определить, какая из двух точек (B или C) расположена ближе к точке A
0
1 / 1 / 0
Регистрация: 07.05.2018
Сообщений: 26
31.05.2018, 09:33  [ТС]
В том то и дело, я уже чекнул код), он не работает, пишет 3 ошибки.

Добавлено через 31 секунду
12,48,48 строчки
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8661 / 4495 / 1670
Регистрация: 01.02.2015
Сообщений: 13,908
Записей в блоге: 12
31.05.2018, 09:38
Я не в курсе что и как вы делаете при чеканье.
В 12 строке ничего нет - пустая строка.
0
1 / 1 / 0
Регистрация: 07.05.2018
Сообщений: 26
31.05.2018, 10:07  [ТС]
А все, спасибо, я разобрался.
Только можете подсказать что означает @@1, @@2...?
И функция ShowInt16?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8661 / 4495 / 1670
Регистрация: 01.02.2015
Сообщений: 13,908
Записей в блоге: 12
31.05.2018, 10:12
@@1: - название метки для перехода
ShowInt16 - поставьте ret первой строчкой в этой процедуре (сразу выход без исполнения кода) и посмотрите отличия в выполнении программы.
1
1 / 1 / 0
Регистрация: 07.05.2018
Сообщений: 26
31.05.2018, 12:49  [ТС]
Спасибо большое)

Добавлено через 2 часа 29 минут
ФедосеевПавел,
А у вас в коде бросается в глаза условный переход сразу после main - т.е. нет действия по установке флагов, а сразу условный переход по состоянию одного из бит.
как мне сделать установку флагов? Совсем глупый вопрос)

Добавлено через 2 минуты
Попросили упростить код, действиями вычитания С=А-В и В=А-С, после этого убрать знаки и сравнить.
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
include 'emu8086.inc'
ORG 100h 
.code 
 char AX a
 char BX b
 char CX c
main    PROC
        JNS @@1
        @@1:
        MOV     AX,[a]
        SUB     AX,[c]
        MOV     [b],AX; b=a-c
        JNS @@2
        @@2:   
        MOV     BX,[a]    
        SUB     BX,[b]     
        MOV     [c],BX;c=a-b
        JNS @@3
        @@3:
        NEG AX
        JNS @@4
        @@4:
        NEG BX
        JNS @@5
        CMP JL/JNGE
0
1 / 1 / 0
Регистрация: 07.05.2018
Сообщений: 26
31.05.2018, 12:52  [ТС]
И все остальное по заданию, только ввод нужен еще с клавиатуры на экране.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8661 / 4495 / 1670
Регистрация: 01.02.2015
Сообщений: 13,908
Записей в блоге: 12
31.05.2018, 12:58
Любая логическая, арифметическая, а также неразрушающие инструкции сравнения cmp и test изменяют флаги состояния процессора (перенос, нулевой результат, знак результата).

Добавлено через 7 минут
 Комментарий модератора 
Одна тема - одна задача.


Добавлено через 2 минуты
К сожалению глюк форума разрушил "Электронный учебник", а я не могу восстановить нужную главу, т.к. она содержит 93000 символов, а форум разрешает лишь 25000 символов на сообщение.
0
1 / 1 / 0
Регистрация: 07.05.2018
Сообщений: 26
31.05.2018, 13:08  [ТС]
ФедосеевПавел, в той теме и была эта же задача, я начал делать код, но ошибки я пока не в силах сам убрать.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8661 / 4495 / 1670
Регистрация: 01.02.2015
Сообщений: 13,908
Записей в блоге: 12
31.05.2018, 13:56
Так это что?
Assembler
25
26
27
28
29
30
31
32
33
34
35
36
37
        mov     ax,     [A]
        mov     bx,     [B]
        mov     cx,     [C]
 
        sub     bx,     ax
        jns     @@1
                neg     bx
        @@1:
 
        sub     cx,     ax
        jns     @@2
                neg     cx
        @@2:
Добавлено через 1 минуту
Это вычисление абсолютных значений расстояний от B до A, от C до A.
Результаты в bx и cx соответственно.

Добавлено через 1 минуту
Далее - сравнение расстояний
Assembler
39
40
41
42
43
44
45
        cmp     cx,     bx
        jne     @@3
        mov     ah,     09h
        lea     dx,     [msgEqu]
        int     21h
        jmp     @@Exit
        @@3:
Это проверка равенства расстояний

Добавлено через 3 минуты
А это, при неравенстве - определение меньшего расстояния
Assembler
45
46
47
48
49
50
51
52
53
54
55
56
        @@3:
        ja      @@4 
                mov     bx,     cx  ;если меньше расстояние от C, то запомнить расстояние в bx
        @@4:
        adc     [Char], 0  ;это трюк - в переменной Char символ "B" и если был перенос (|AC| < |AB|), то будет символ "C"
        mov     ah,     09h ; вывод сообщения
        lea     dx,     [msgNearest]
        int     21h
 
@@Exit:
        mov     ax,     bx ; вывод наименьшего расстояния
        call    ShowInt16
Добавлено через 5 минут
Можно изменить выбор сообщения и длины - упростить и обойтись без трюков.
0
1 / 1 / 0
Регистрация: 07.05.2018
Сообщений: 26
05.06.2018, 12:50  [ТС]
ФедосеевПавел, можете помочь? У меня с этим кодом ошибки, нужно ввести с КЛАВИАТУРЫ.
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
include 'emu8086.inc'
org 100h
.data
        ODINAK          db      'Odinakovo udaleni na rasstoyanii ot A = ', '$'
        BLIGE      db      'Blige tochka  '
        Char            db      'B'
                        db      ' na rasstoyanii ot A = ', '$'
 
 
.code
 
main    proc
        
        
        
        ;èíèöèàëèçàöèÿ ðåãèñòðà ds
        mov     ax,     @data
        mov     ds,     ax
        call scan_num
        mov ax,cx
        call scan_num
        mov bx,cx
        call scan_num
     
        mov     ax,     [A] ;Ýòî âû÷èñëåíèå çíà÷åíèé ðàññòîÿíèé îò B äî A, îò C äî A.
        mov     bx,     [B] ;Ðåçóëüòàòû â bx è cx
        mov     cx,     [C]
        
 
        sub     bx,     ax   ;Âû÷èòàíèå
        jns     @@1
                neg     bx
        @@1:
 
        sub     cx,     ax  ;Âû÷èòàíèå
        jns     @@2
                neg     cx
        @@2:
       
       
        cmp     cx,     bx  ;Ñðàâíåíèå ðàññòîÿíèé
        jne     @@3
        mov     ah,     09h
        lea     dx,     ODINAK
        int     21h
        jmp     @@Exit       
       
       
       
        @@3:                ;Ïðè íåðàâåíñòâå - îïðåäåëåíèå ìåíüøåãî ðàññòîÿíèÿ
 
        ja      @@4
                mov     bx,     cx ;åñëè ìåíüøå ðàññòîÿíèå îò C, òî çàïîìíèòü ðàññòîÿíèå â bx
        @@4:
        adc     [Char], 0 ;ýòî òðþê - â ïåðåìåííîé Char ñèìâîë "B"
                          ;è åñëè áûë ïåðåíîñ (|AC| < |AB|), òî áóäåò ñèìâîë "C"
       
        mov     ah,     09h ; âûâîä ñîîáùåíèÿ
        lea     dx,     BLIGE
        int     21h
 
@@Exit:
        mov     ax,     bx    ;Âûâîä íàèìåíüøåãî ðàññòîÿíèÿ
        call    ShowInt16
                              ;îæèäàíèå íàæàòèÿ ëþáîé êëàâèøè
ret
main    endp
 
 
 
 
ShowInt16       proc
        push    bx            ;Çàïèñü â ñòåê
        mov     bx,     10
        xor     cx,     cx      ;ñèìâîëîâ â ìîäóëå ÷èñëà
        or      ax,     ax
        jns     @@div
                neg     ax   ;Ìåíÿåò çíàê
                push    ax
                mov     ah,     02h
                mov     dl,     '-'
                int     21h
                pop     ax
        @@div:
                xor     dx,     dx ;âûïîëíÿåò ñëîæåíèå ïî ìîäóëþ 2 âñåõ ïàð áèò îïåðàíäîâ
                div     bx
                push    dx
                inc     cx      ;êîëè÷åñòâî öèôð â ÷èñëå
                or      ax,     ax ;âûïîëíÿåò ëîãè÷åñêîå ñëîæåíèå âñåõ ïàð áèò îïåðàíäîâ
        jnz     @@div
        mov     ah,     02h
        @@store:
                pop     dx
                add     dl,     '0'  ;Ñëîæåíèå
                int     21h
        loop    @@store
        pop     bx
        ret
ShowInt16       endp
define_scan_num 
end     main
Добавлено через 46 секунд
На комментарии можно не обращать внимания, с 28 строки ошибки
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8661 / 4495 / 1670
Регистрация: 01.02.2015
Сообщений: 13,908
Записей в блоге: 12
05.06.2018, 13:08
В какие переменные производится ввод с клавиатуры?
Это и вопрос и ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.06.2018, 13:08
Помогаю со студенческими работами здесь

Определить, какая из точек b,c расположена ближе к а.
На оси ОХ расположены три точки а, b, с. Определить, какая из точек b,c расположена ближе к а. ОБЪЯСНИТЕ ПОЖАЛУЙСТА)

Определить, какая из точек расположена ближе к а
На оси ОХ расположены три точки а, b, с. Определить, какая из точек b или с расположена ближе к а. Помогите, пожалуйста, написать...

Определить, какая из точек расположена ближе к а
На оси ОХ расположены три точки а, b, с. Определить, какая из точек b или с расположена ближе к а. Помогите, пожалуйста, написать...

Определить, какая из точек b или с расположена ближе к а
1.Дана последовательность целых чисел а1, а2,..., а10, элементы которой образована с помощью датчика случайных чисел из диапазона 1-999.. ...

Определить какая из точек A(x1, y1, z1), B(x2, y2, z2) ближе расположена к точке С(x3, y3, z3)
написать программу решения следующей задачи: определить какая из точек A (x1, y1, z1) или B (x2, y2, z2) ближе расположена к точке С (x3,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru