Архитектура микропроцессоров и их программирование. Карягин А.П. - 28 стр.

UptoLike

Составители: 

28
2.3.3 Использование процедур и команд организации цикла и ветвления,
команды с косвенной адресацией
Перед началом выполнения этого задания необходимо по электронному
справочнику (программа ASS) ознакомиться с форматом и функциями команд
LOOP, JMP, Jnnn, CALL, RET, PUCH и POP.
2.3.3.1 Проанализировать и выполнить программу расширенной пере-
сылки данных EXMOVE:
page 66,80
title exmove
stacksg segment para stack 'stack'
dw 32 dup(?)
stacksg ends
datasg segment para 'data'
name1 db 'abcdefghi','$'
name2 db 'jklmnopqr','$'
name3 db 'stuvwxyz*','$'
datasg ends
codesg segment para 'code'
assume cs:codesg,ds:datasg,ss:stacksg,es:datasg
begin proc far ;главная процедура
push ds
sub ax,ax
push ax
mov ax,datasg
mov ds,ax
mov es,ax
call b10move ;вызов процедуры
call c10move ;вызов процедуры
ret
begin endp
b10move proc ;начало процедуры
lea si,name1
lea di,name2
mov cx,09 ;счётчик цикла
b20: mov al,[si] ; начало цикла
mov [di],al
inc si
inc di
dec cx
jnz b20 ;переход на метку в20
ret ;выход из процедуры
b10move endp
c10move proc
      2.3.3 Использование процедур и команд организации цикла и ветвления,
команды с косвенной адресацией

      Перед началом выполнения этого задания необходимо по электронному
справочнику (программа ASS) ознакомиться с форматом и функциями команд
LOOP, JMP, Jnnn, CALL, RET, PUCH и POP.

      2.3.3.1 Проанализировать и выполнить программу расширенной пере-
сылки данных EXMOVE:
          page 66,80
      title exmove
      stacksg segment para stack 'stack'
             dw 32 dup(?)
      stacksg ends
      datasg segment para 'data'
             name1 db 'abcdefghi','$'
             name2 db 'jklmnopqr','$'
             name3 db 'stuvwxyz*','$'
      datasg ends
      codesg segment para 'code'
            assume cs:codesg,ds:datasg,ss:stacksg,es:datasg
      begin proc far      ;главная процедура
            push ds
            sub ax,ax
            push ax
            mov ax,datasg
            mov ds,ax
            mov es,ax
            call b10move ;вызов процедуры
            call c10move ;вызов процедуры
            ret
      begin endp
      b10move proc          ;начало процедуры
            lea si,name1
            lea di,name2
            mov cx,09           ;счётчик цикла
      b20: mov al,[si]       ; начало цикла
            mov [di],al
            inc si
            inc di
            dec cx
            jnz b20              ;переход на метку в20
            ret                ;выход из процедуры
      b10move endp
      c10move proc
28