Макросы и процедуры - Assembler

Узнай цену своей работы

Формулировка задачи:

1)Можно ли использовать макрос в процедуре? 2)Как вызвать процедуру, не используя команду call? 3)Что может означать строка len1 equ $-s1-3 в программе ниже
;program to test sorting
 
OUTSTR      MACRO       str
    push    ax
    mov ah,09h
    lea dx,str
    int 21h
    pop ax
    ENDM
 
model   small
.stack  100h
.data
s1      db  'cabde',10,13,'$'
len1        equ $-s1-3
s2      db  'k1u4afdp5ce2bo6sg3wqr8tyiljh7zx9vnm',10,13,'$'
len2        equ $-s2-3
.code
;ПРОЦЕДУРА СОРТИРОВКИ. В bx адрес строки, в dx длина строки
sort1       proc
    push    ax          ;сохранить ax
    push    cx          ;сохранить cx
    mov cx,dx           ;cx=len
    dec cx;         ;cx=len-1
    xor si,si           ;i=0
I:      mov di,si           ;цикл по i
    inc di          ;j=i+1
    push    cx          ;подготовка к циклу по j
    mov cx,dx           ;cx=len
    sub cx,di
J:      mov al,[bx+si]      ;цикл по j
    cmp al,[bx+di]
    jb  B           ;s[i]<s[j]?
    mov ah,[bx+di]      ;not
    mov [bx+si],ah      ;s[i]=s[j]
    mov [bx+di],al      ;s[j]=tmp
B:                      ;yes
    inc di          ;j++
    loop    J       
    inc si
    pop cx
    loop    I
    pop cx          ;восстановить первоначальное cx
    pop ax          ;восстановить первоначальное ax
    ret
sort1       endp
 
start:
    mov ax,@data
    mov ds,ax
    OUTSTR  s1
    lea bx,s1
    mov dx,len1
    call    sort1
    OUTSTR  s1
    OUTSTR  s2
    lea bx,s2
    mov dx,len2
    call    sort1
    OUTSTR  s2
;
    mov ax,4c00h    ;стандартный выход
            int 21h
    end start
4)Объясните назначение команды mov bp,sp в программе ниже
model   small
.stack  100h    
include numout.inc
.data
x       db  9
y       db  7
r       dw  ?
.code
alg proc
    push    bp
    mov bp,sp
    mov al,3
    mul byte ptr [bp+4]
    mov dx,ax
    mov al,2
    mul byte ptr [bp+6]
    add dx,ax   
    mov sp,bp
    pop bp
    ret 4   ;очистка 4-х байт стека
alg endp
;
begin:
    mov ax,@data
        mov ds,ax
    push    word ptr y
    push    word ptr x
    call    alg
    mov r,dx
    numout r,0,3
    mov ax,4c00h    ;стандартный выход
        int 21h
    end begin

Решение задачи: «Макросы и процедуры»

textual
Листинг программы
s1      db  'cabde',10,13,'$'
len1        equ $-s1-3

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы