Правила - Рейтинг участников - Библиотека решений

Решения задачи #10.

1. Условие задачи

2. Барт Симпсон – 14 байт.

3. Broken Sword – 15 байт.

4. [stl] – 15 байт.

5. Alexey Volkov – 16 байт.

6. Edward Samokhvalov – 18 байт.

7. Ayl – 18 байт.

8. Maverick – 20 байт.

9. Lenskiy – 20 байт.

 

Условие задачи.

Вывести на экран состояние флагов.

 

Решение by Барт Симпсон (14 байт):

 

.model tiny
.code
org 100h
begin:
pushf
pop bx
mov cl,16
@@print:
 shr bx,1
 adc al,30h
 int 29h
 db 0d6h ;salc или как обнулить al в 1 байт
loop @@print
retn
end begin

 

Решение by Broken Sword (15 байт):

; Assembler Tasks COMPO #10

; tasm /m entry.asm

; tlink /x /3 /t entry.obj

; entry.com

; by Broken Sword [HI-TECH]

; size: 15 bytes

 

                .model         tiny

                .code

                .186

                org            100h                

@@start:               

                pushf

                pop            BX

                mov            CL,10h

@@L1:

                mov            AL,18h

                rcr            BX,1

                rcl            AX,1

                int            29h

                loop           @@L1

                ret

                end            @@start

 

Решение by [stl] (15 байт):

; task10.asm
; by [stl]
; tasm task10.asm
; tlink /x /3 /t task10.obj
; 15 bytes
.386
IDEAL
MODEL tiny
CODESEG
ORG 100h
start:
pushf
pop dx ;get flags register
mov cl,10h
loop0:
mov al,30h
shr dx,1
adc al,0
int 29h
loop loop0
ret
END start

 

Решение by Aleksey Volkov (16 байт):

;Assembler Tasks COMPO #9

;Способ компиляции:

;tasm 10.asm

;tlink /t 10.obj

;Автор: Alexey Volkov AKA xAL

;Размер: 19 байт

.model tiny

.386

.code

org 100h

start:

    pushf           ;  |

    pop     bx      ; | Теперь BX=FLAGS

 

    mov     cl, 10h ; -- Выводим 16 цифр --

cycle:

    shr     bx, 1   ; Сдвиг BX вправо, в CF выталкивается младший бит

    jc      short ed;   \

    mov     al, '0' ;     | Выбираем, что будем писать

    jmp     short q ;   | (0 или 1)

ed: mov     al, '1' ; /

q:  int     29h     ; Пишем

    loop    cycle   ; -- end of 'Выводим 16 цифр' --

    ret

end start

 

Решение by Edward Samokhvalov (18 байт):

; bY Сам0хвалов Эдвард
; tasm proga.asm
; tlink/t proga.obj
; 18 bytes
.model tiny
.code
org 100h
g00t:
      pushf
      pop bx
      mov cx, 16
      d0:
;F15_F0:   rol bx, 1  ;
выводит F15 -> F0
          mov al, bl
          and al, 00000001b
          add al, 30h
          int 29h
F0_F15:   shr bx, 1 ;
выводит F0 -> F15
      loop d0
ret
end g00t
;OUTPUT:
;0011001000000010  F15_F1
;0100000001001100  F1_F15
;
ОДНУ ИЗ МЕТОК НАДО ЗАКОММЕНТИРОВАТЬ -
;
И МОЖНО С ЛЁГКОСТЬЮ МЕНЯТЬ ПОРЯДОК ВЫВОДА.

 

Решение by Ayl (18 байт):

; Assembler Tasks COMPO #10
; tasm 10.asm
; tlink /x /t 10.obj
; 10.com
; by Ayl
; size: 18 bytes

 .Model TINY
.286

 .Code
.StartUp
  pushf
  pop  bx
  mov  cx, 16
r:
  mov  ax, bx
  shr  bx, 1
  and  al, 1
  or   al, 30h
  int 29h
  loop r
  ret
end

 

Решение by Maverick (20 байт):

;Task #10(вывод регистра флагов с пмощью 32битных регистров)
;Способ компиляции:
;tasm 10.asm
;tlink /t 10.obj
;Автор: Maverick
;Размер: 20байт
.model      tiny
.386
.code
org         100h
Begin:
pushf
pop ax                    ;В AX регистр флагов
rol eax,16               ;Закинем его в старшую часть EAX
mov cl,16                ;Выводим 16 бит
go:
xor al,al
rol eax,1
or al,30h
int 29h
loop go
ret
end Begin

 

Решение by Lenskiy (20 байт):

; tasm flag.asm
; tlink /x /t flag.obj
; flag.com
; size: 20 bytes

.286
CSEG segment
assume CS:CSEG,DS:CSEG,ES:CSEG,SS:CSEG
ORG 100h
start:
      pushf
      pop bx
      mov cl,10h
      mov ah,2
@@1:  xor dl,dl
      rcr bx,1
      rcl dl,1
      add dl,30h
      int 21h
      loop @@1
      ret
CSEG ends
end start 

 

Hosted by uCoz