Обнуляются переменные - Assembler
Формулировка задачи:
Есть код на ассемблере, вычисляющий (b*2+c/25)/(a+a/b-1) a-aaaS, b-bbbS, c-cccS, dddS-значение выражения
Если a=6,b=3,c=50 программа выводит dddS=1,znam=7,chis=0 вместо chis=8
Если a=0,b=-1,c=-25 программа выводит znam=-1, и chis=0,dddS=0 вместо chis=-3,dddS=3
Как я понял это не связано с невереными вычислениями, переменные просто обнуляются.
.MODEL Large,C .data Extrn aaaS:word,bbbS:word,cccS:word,dddS:dword,chis:dword,znam:dword dop dw ? .code .386 Public ASM_SW ASM_SW proc far mov ax,2 ;Вычисление числителя imul bbbS mov word ptr chis,ax mov word ptr chis+2,dx mov ax,cccS cwd mov dop,25 idiv dop cwd add word ptr chis,ax adc word ptr chis+2,dx mov ax,aaaS ;Вычисление знаменателя cwd mov word ptr znam,ax mov word ptr znam+2,dx mov ax,bbbS mov dop,ax mov ax,aaaS cwd idiv dop cwd add word ptr znam,ax adc word ptr znam+2,dx sub word ptr znam,1 mov ax,word ptr chis ;Деление числителя на знаменатель mov dx,word ptr chis+2 cdq idiv znam mov dddS,eax ret ASM_SW endp end
Решение задачи: «Обнуляются переменные»
textual
Листинг программы
mov dddS,eax
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д