1. Assembler / Говнокод #24834

    0

    1. 1
    https://github.com/Microsoft/MS-DOS/tree/master/v2.0/source

    [MS-DOS 1.25 & 2.0 Source] Copyright (c) Microsoft Corporation All rights reserved. MIT License Permission is hereby granted, freeof charge, to any person obtaining a copy of this software and associateddocumentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,merge, publish, distribute, sublicense, and/or sell copies of the Software, andto permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice andthis permission notice shall be included in all copies or substantial portionsof the Software.

    THE SOFTWARE IS PROVIDED AS IS,WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TOTHE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE ANDNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLEFOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE ORTHE USE OR OTHER DEALINGS IN THE SOFTWARE.

    Запостил: j123123, 29 Сентября 2018

    Комментарии (19) RSS

    • То ли дело FreeDOS, который под GNU GPL
      Ответить
    • >COMBUFLEN EQU 128 ; Length of commmand buffer
      а что будет, если его превысить?


      WSWITCH EQU 1 ; Wide display during DIR
      PSWITCH EQU 2 ; Pause (or Page) mode during DIR
      ASWITCH EQU 4 ; ASCII mode during COPY
      BSWITCH EQU 8 ; Binary mode during COPY
      VSWITCH EQU 10H ; Verify switch
      GOTSWITCH EQU 8000H ; Meta switch set if switch character encountered

      Внутри слова осталось еще много бит, почему их не использовали?
      Ответить
      • > COMBUFLEN EQU
        - лол, лекарство от простуды какое-то.

        Кстати, Инканус, погугли, как будет "танк" на языке навахо, тебе понравится.
        Ответить
        • Так что ли?

          https://www.factroom.ru/wp-content/uploads/2020/03/1-26.jpg

          Кстати, кто такая GOTSWITCH? Ведьма го́тов?

          А лекарство «Комбуфлен» что-то совсем не гуглится.
          Ответить
          • Типа того. Но думаю, что на картинке всё же написана ерунда, потому что слова "автомобиль" в языке навахо 100% нет.
            Ответить
            • Я тоже подумал, что слова «автомобиль» в языке навахо быть не должно. Однако, наткнулся на такую ссылку с реальными примерами применения этого слова в текстах:
              https://ru.glosbe.com/ru/nv/автомобиль

              «Baa yinííł ídlį́ lá chidi bijéí nahálin» = «Чувство вины подобно аккумулятору в автомобиле с бензиновым двигателем».
              Ответить
              • Тут написано, как оно появилось:
                https://navajowotd.com/word/chidi/

                Забавно. Это как голубя называть "курлы-курлы" или "ворк-ворк".
                Ответить
              • На вики в статье про язык навахо фраза chidí naaʼnaʼí beeʼeldǫǫhtsoh bikááʼ dah naaznilígííʼ переведена в двух местах, причём по-разному: «машина, на которой сидят сверху и которая ползает с большой взрывающейся вещью сверху» и «ползающее транспортное средство, располагающееся на высоте и создающее взрывы».
                Ответить
              • Аккумулятор в автомобиле без бензинового двигателя подобен аккумулятору в автомобиле с бензиновым двигателем, только без бензинового двигателя.
                Ответить
    • Что такое асьюм? Я только в джюните асьюм зна

      Это просто попытка сообщить программисту контракт функции?
      https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/COMMAND.ASM
      Ответить
      • Директива ASSUME используется, чтобы помочь ассемблеру сгенерировать правильную таблицу фиксапов. Она используется, только если используются группы сегментов, и действует на инструкции с квадратными скобками (с косвенной адресацией).

        NOTHING означает, что значение сегментного регистра неизвестно, и сюда нужно впихнуть полный адрес. Любой другой идентификатор воспринимается как название группы и подсказывает тупому компилятору, чему в этой точке следования может быть равно значение сегментного регистра.
        Ответить
        • Эх, неточно написал.

          Директиву ASSUME используют, чтобы сократить исходный код: чтобы у каждой инструкции не писать префиксы сегментов (CS:, DS:, ES:, SS:, FS:, GS:), а чтобы ассемблер их подставил сам.

          Например, пишем ASSUME SS:RESGROUP. Тогда если ниже встретится MOV SP, [RSTACK], а ассемблер заметит, что RSTACK описан в секции из группы RESGROUP, то он подставит префикс SS:, как будто мы написали код MOV SP, SS:[RSTACK].
          Ответить
          • Х.з., я всегда руками писал эти префиксы. Тем более в сегментный регистр один хрен надо значение помещать руками.
            Ответить
            • Да мне тоже кажется, что руки не отвалятся. Я так и не понял, чем помогает эта директива.
              Ответить

    Добавить комментарий