Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [asm]Арифметические команды и команды переходов 
:(
    Опции темы
Daremez
Дата 20.1.2013, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 29.12.2009

Репутация: нет
Всего: нет



Напишите программу на языке ассемблера с полным описанием сегментов для вычисления значения y. Используйте, где требуется, 32х-разрядные регистры.
user posted image
PM MAIL   Вверх
Daremez
Дата 21.1.2013, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 29.12.2009

Репутация: нет
Всего: нет



сделал но не пойму как сделать в одной программе два перехода:
Код


data segment
  a db ?
  x db ?
  y db 0
  y1 db 0
  y2 db 0
  per db 10,13,'$'
  mesa db 10,13,'input a: $'
  mesx db 10,13,'input x: $',10,13
data ends                 
stk segment stack        
 db 128 dup(?)           
stk ends                 
assume cs:code, ds:data, ss:stk    
code segment             
 start:    
       mov ax,data
       mov ds,ax   
       mov dx, offset mesa
       mov ah,9 ;приглашение на ввод а
       int 21h
       
        mov ah,1 ;считывание нажатого символа
        int 21h
        mov a,al
        
        mov dx,offset mesx
        mov ah,9 ;приглашение на ввод x
        int 21h
        
        mov ah,1 ;считывание нажатого символа
        int 21h
        mov x,al
        
        mov dx,offset per
        mov ah,9
        int 21h
        
        mov al,a
        cmp x,al
        jle Lower ;если x<=a, то перейти на метку Lower. Иначе на метку Higher.
        Lower:
            mov al,a
            add al,al
            sub al,x
            mov y1,al
            jmp short m2
        
        Higher:
            mov al,a
            add al,x
            mov y1,al
            
        m2:
        mov al,10
        cmp x,al
        jge Lower;если x<=10, то перейти на метку Lower. Иначе на метку Higher.
        Lower:
        mov y2,x
        jmp short m3
        Higher:
        mov al,a
        mul x
        mov y2,al
        m3:
        add y1,y2
        mov y,y1
        mov  y,02h      ;вывод элемента Х из DL на экран
        int  21h
       
        mov  ah,01h      ;остановка программы в 
        int  21h         ;ожидании нажатия клавиши  
        mov  ax,4c00h    ;завершение работы программы      
        int  21h       
code ends               
end start

PM MAIL   Вверх
Daremez
Дата 21.1.2013, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 29.12.2009

Репутация: нет
Всего: нет



 smile 
Код

data segment
  a db ?
  x db ?
  y db 0
  y1 db 0
  y2 db 0
  per db 10,13,'$'
  mesa db 10,13,'input a: $'
  mesx db 10,13,'input x: $',10,13
data ends                 
stk segment stack        
 db 128 dup(?)           
stk ends                 
assume cs:code, ds:data, ss:stk    
code segment             
 start:    
       mov ax,data
       mov ds,ax   
       mov dx, offset mesa
       mov ah,9 ;приглашение на ввод а
       int 21h
       
        mov ah,1 ;считывание нажатого символа
        int 21h
        mov a,al
        
        mov dx,offset mesx
        mov ah,9 ;приглашение на ввод x
        int 21h
        
        mov ah,1 ;считывание нажатого символа
        int 21h
        mov x,al
        
        mov dx,offset per
        mov ah,9
        int 21h
        
        mov al,a
        cmp x,al
        jle Lower ;если x<=a, то перейти на метку Lower. Иначе на метку Higher.
        jg Higher
        Lower:
            mov al,a
            add al,al
            sub al,x
            mov y1,al
            jmp short m2
        
        Higher:
            mov al,a
            add al,x
            mov y1,al
            
        m2:
        mov al,10
        cmp x,al
        jge Small1;если x<=10, то перейти на метку Small1. Иначе на метку Bigg1.
        jl Bigg
        Small1:
        mov al,x
        mov y2,al
        jmp short m3
        Bigg:
        mov al,a
        mul x
        mov y2,al
        m3:
        mov al,y1
        mov bl,y2
        add al,bl
        mov y,al
    ;вывод на экран
 aam 
    add ax,3030h 
    mov dl,ah 
    mov dh,al 
    mov ah,02 
    int 21h 
    mov dl,dh 
    int 21h
mov ah,0
int 16h

mov ah,4ch
int 21h
   
code ends               
end start

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.