Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Интересные и занимательные задачи по программированию > Assembler


Автор: try_to_get 26.8.2007, 11:10
Не порядок  smile 
Задачки по языкам C++, Pascal и т.д. есть, а по языку Assembler нету.
Так вот, в этом топике будут находиться задачки по Ассемблеру.
Если у кого, есть задачи на эту тему, прошу выкладывать здесь.
Модераторам: если можно закрепите тему.
Спасибо!

Автор: Pakshin A. S. 27.8.2007, 12:10
Цитата(try_to_get @  26.8.2007,  11:10 Найти цитируемый пост)
Модераторам: если можно закрепите тему.

Зафиксировано.


M
Pakshin A. S.
Все оффтопы будут удалять без особых разъяснений!

Автор: PPS05 4.1.2008, 19:02
Может, известная вещь, но все-таки:

Цитата
Есть процедура, которая устанавливает флаг переноса, если происходит ошибка и очищает его, если таковой не произошло:

Код

noerr:  clc                                     ; 1 байт
        jmp     exit                            ; 2 байта
error:  stc                                     ; 1 байт
exit:   ret                                     ; 1 байт

А как обойтись всего тремя байтами?

Автор: Akina 4.1.2008, 23:42
Цитата(PPS05 @  4.1.2008,  20:02 Найти цитируемый пост)
как обойтись всего тремя байтами? 

Не трогая содержимого регистров?

Автор: PPS05 5.1.2008, 16:41
Цитата(Akina @  4.1.2008,  22:42 Найти цитируемый пост)
Не трогая содержимого регистров?

Ага. smile 

Автор: PPS05 9.1.2008, 19:08
Ну, так как нет ответов:

Код

 noerr: test    al,00h                          ; 1 байт \
        org     $-1                             ;         > TEST AL,0F9H
 error: stc                                     ; 1 байт /
        ret                                     ; 1 байт

Автор: Akina 9.1.2008, 19:37
только не TEST AL,0AAH, а TEST AL,0F9H (0AAh = stosb)
 

Автор: KTyJLXy 2.10.2011, 10:06
Маленькая прога, шифрующая .txt через XOR со свитчами /s /d шифрование и дешифрование соотвественно.
Код

CODE SEGMENT
ORG 100h
ASSUME cs:code, ds:code

Main:
  mov dx, OFFSET cmdline
  call CmdTail 
  mov si, dx
  mov di, OFFSET param
  
  Pass:
    movsb
    cmp byte ptr [si], 20h
    jne Pass
  
  add si, 1
  mov di, OFFSET filename
  
  Repeat:
    movsb
    cmp byte ptr [si], 0
    jne Repeat
  ; ------------------------------------
  ; Open file                          
  ; ------------------------------------
  mov ah, 3Dh   
  mov al, 02h
  mov dx, OFFSET filename
  int 21h
  jc Error
  mov filenum, ax  

  ; ------------------------------------
  ; Read file
  ; ------------------------------------
  mov ah, 3Fh
  mov bx, filenum
  mov cx, bufsize
  mov dx, OFFSET buffer
  int 21h
  jc Error
  mov filesize, ax

  ; ------------------------------------
  ; Close file
  ; ------------------------------------
  mov ah, 3Eh
  mov bx, filenum
  int 21h
  jc Error

  ; ------------------------------------
  ; XOR encryption / decription
  ; ------------------------------------
  mov di, 0
  mov si, 0
  mov bx, OFFSET buffer
  
  Iter:
    xor ax, ax
    mov al, [bx + si]
    xor al, key
    mov [bx + si], al
    add si, 1
    add di, 1
    cmp di, filesize
    jne Iter                                               
 
  mov ah, 3Ch   
  mov al, 02h
  mov dx, OFFSET filename
  int 21h
  jc Error
  mov filenum, ax  
 
  ; ------------------------------------
  ; Write buffer to file
  ; ------------------------------------
  mov ah, 40h
  mov bx, filenum
  mov cx, filesize
  mov dx, OFFSET buffer
  int 21h
  jc Error
    
  ; ------------------------------------
  ; Close file
  ; ------------------------------------
  mov ah, 3Eh
  mov bx, filenum
  int 21h
  jc Error
  jmp Exit

Error:
  mov ah, 09h
  mov dx, OFFSET message
  int 21h

Exit:
  mov ah, 08h
  int 21h
  int 20h

  cmdline DB 129 DUP (?)
  param DB 20 DUP (0)
  filename DB 20 DUP (" "),0
  filenum DW 0
  filesize DW 0
  bufsize = 1024
  buffer DB bufsize DUP (0)

  key DB 117

  message DB "Error!", '$'

include CmdTail.inc
CODE ENDS
END Main

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)