Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Assembler
Перезагрузить страницу Как исправить ошибки в программном коде
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Belldandy Belldandy вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.06.2003
По умолчанию Как исправить ошибки в программном коде - 03.06.2003, 22:52

Асм для ДОСа
Код:
;****************************************************
;ђҐиЁвм бЁб⥬г га ў*Ґ*Ё©
;    / A+(B-C)*D, Ґб«Ё 0<=C<2
;Y =|
;     A+B/C
; C ¬Ґ*пҐвбп ®в Cn ¤® Ck c и Ј®¬ DELC
;****************************************************
DSEG SEGMENT
; Ёб室*лҐ ¤ **лҐ - * з «®
 TVA db '‚ўҐ¤ЁвҐ Ђ:$'
  TVB db '‚ўҐ¤ЁвҐ B:$'
  TVD db '‚ўҐ¤ЁвҐ D:$'
  TVCn db '‚ўҐ¤ЁвҐ CN:$'
  TVCk db '‚ўҐ¤ЁвҐ CK:$'
  TVDELC db '‚ўҐ¤ЁвҐ и Ј ‘:$'
  C dw ?
  A dw ?
  B dw ?
  D dw ?
  Cn dw ?
  Ck dw ?
  DELC dw ?
  TPA db 'A=$'
  TPB db 'B=$'
  TPD db 'D=$'
  TPCn db 'Cn=$'
  TPCk db 'Ck=$'
  TPDELC db 'и Ј=$'
  TPY db 'Y=$'
  TPC db 'C=$'
 
; Ёб室*лҐ ¤ **лҐ - Є®*Ґж
   Y dw ?
  User_String db 10,11 dup (?)

  Text10 db '‘ва®Є  б«ЁиЄ®¬ ¤«Ё** п',10,13,'$'
  Text20 db '—Ёб«® ў*Ґ ¤®ЇгбвЁ¬®Ј® ¤Ё Ї §®* ',10,13,'$'
  Text30 db 'ЌҐ¤®ЇгбвЁ¬л© бЁ¬ў®« - '
  Symv db ' ',10,13,'$'
  Text40 db 'Џ®ўв®аЁвҐ ўў®¤',10,13,'$'
  New_Line db 10,13,'$'
  Ish db '?б室*лҐ ¤ **лҐ: ',10,13,'$'
  Buffer db 6 dup (?),'$'
  Otw db 'ђҐ§г«мв в : ',10,13,'$'
  Pr1 db '  $'
DSEG ENDS

Stacks segment
  dw 100 dup (?)
Stacks ends

Codes segment
  MAIN PROC far
    Assume CS:codes, DS:dseg, SS:stacks
    Mov AX,Dseg
    Mov DS,AX
   ; Ё*¤ЁўЁ¤г «м* п з бвм Їа®Ја ¬¬л - * з «®
   ;============================================
  LEA DX, TVA
  CALL PRT 
  CALL VVOD
  Mov A,AX
  CALL NL; ЇҐаҐў®¤ бва®ЄЁ
;============================================
  LEA DX, TVB
  CALL PRT
  CALL VVOD
  Mov B,AX    
  CALL NL
;============================================
  LEA DX, TVD
  CALL PRT
  CALL VVOD
  Mov D,AX
  CALL NL
;============================================
  LEA DX, TVCn
  CALL PRT
  CALL VVOD
  Mov Cn,AX
  CALL NL
;===========================================
  LEA DX, TVCk
  CALL PRT
  CALL VVOD
  Mov Ck,AX
  CALL NL
;========================================== 
  LEA DX, TVDELC
  CALL PRT
  CALL VVOD
  Mov DELC,AX
  CALL NL
;===========================================
  LEA DX, Ish
  CALL PRT
;+++++++++++++++++++++++++++++++++++++++++++
  LEA DX, TPA
  CALL PRT
  Mov AX,A 
  CALL PRN
  CALL NL
;+++++++++++++++++++++++++++++++++++++++++++
  LEA DX, TPB
  CALL PRT
  Mov AX,B
  CALL PRN
  CALL NL
;+++++++++++++++++++++++++++++++++++++++++++
  LEA DX, TPD
  CALL PRT
  Mov AX,D
  CALL PRN
  CALL NL
;++++++++++++++++++++++++++++++++++++++++++
  LEA DX, TPCn
  CALL PRT
  Mov AX, Cn
  CALL PRN
  CALL NL
;++++++++++++++++++++++++++++++++++++++++++
  LEA DX, TPCk
  CALL PRT
  Mov AX, Ck
  CALL PRN
  CALL NL
;+++++++++++++++++++++++++++++++++++++++++
  LEA DX, TPDELC
  CALL PRT
  Mov AX, DELC
  CALL PRN
  CALL NL
;+++++++++++++++++++++++++++++++++++++++++
  LEA DX, Otw
  CALL PRT
  Mov AX, Cn
  Mov C, Ax; C:=CN
;=========================================
BL3:
  CMP C,2
  JG BL6
;=========================================
BL4:
  CMP C,0
  JGE BL7
  JMP BL6
;=========================================  
BL5:
  MOV AX,B
  SUB AX,C
  IMUL D
  MOV BX, A
  SUB BX,AX
  MOV Y,AX

;=========================================
BL6:
  CWD
  MOV AX,B
  IDIV C    
  ADD AX,A
  MOV Y,AX
;=========================================

BL7: 
 LEA DX,TPY
 CALL PRT
 MOV AX,Y
 CALL PRN
 CALL probel

 LEA DX,TPC
 CALL PRT
 MOV AX,C
 CALL PRN
 CALL NL

;Є ‘ ¤®Ў ў«пҐ¬ и Ј
  MOV AX,C 
  ADD AX,DELC
;Ў«®Є 9 - Їа®ўҐаЄ  ‘<=CK 
  MOV C,AX
  CMP AX,Ck
  JG FIN
  JMP BL3  
FIN:
  Mov AH,4CH
  Mov DS,AX
  
   ; Ё*¤ЁўЁ¤г «м* п з бвм Їа®Ја ¬¬л - Є®*Ґж
  MAIN ENDP
;********************************************
CONVBA PROC
  push CX
  push DX
  push SI
  push AX
  Mov CX,6
  C10:Mov byte PTR [BX],' '
      Inc BX
      Loop C10
      Mov SI,10
      OR AX,AX
      JNS C20
      NEG AX
  C20:xor DX,DX
      Div SI
      Add DX,30h
      Dec BX
      Mov [BX],DL
      OR AX,AX
      JNZ C20
      POP AX
      OR AX,AX
      JNS C30
      Dec BX
      Mov byte PTR [BX],'-'
  C30:POP SI
      POP DX
      POP CX
  RET
CONVBA endp
;********************************************
ReadKeys PROC
  push AX
  LEA DX,User_String
  Mov AH,0AH
  Int 21h
  Sub CH,CH
  Mov CL,User_String+1
  Add DX,2
  POP AX
  RET
ReadKeys ENDP
;********************************************
VVOD PROC
  Inp:CALL ReadKeys
      Mov BX,DX
      CALL ASCII_BIN
      JNC Valid
      CMP DI,00FFH
      JNE Inv_Char
      OR AX,AX
      JNZ Range_Er
      LEA DX,Text10
      Mov AH,09h
      Int 21h
      JMP Povtor
  Range_Er:LEA DX,Text20
           Mov AH,09h
           Int 21h
           JMP Povtor
  Inv_Char:LEA DX,Text30
           Mov AL,[DI]
           Mov Symv,AL
           Mov AH,09h
           Int 21h
  Povtor:LEA DX,Text40
         Mov AH,09h
         Int 21h
         JMP Inp
  Valid:   
  RET
VVOD ENDP
;********************************************
ASCII_BIN PROC
  push BX
  push CX
  Sub AX,AX
  Sub DX,DX
  Mov DI,00FFH
  CMP CX,7
  JG No_Good
  Blanks:CMP byte PTR[BX],' '
         JNE Chk_Neg
         Inc BX
         Loop Blanks
  Chk_Neg:CMP byte PTR[BX],'-'
          JNE Chk_Pos
          Inc BX
          Dec CX
          CALL CONV_AB
          JC Thru
          CMP AX,32768
          JA No_Good
          Neg AX
          JS Good
  Chk_Pos:CMP byte PTR[BX],'+'
          JNE Go_Conv
          Inc BX
          Dec CX
  Go_Conv:CALL CONV_AB
          JC Thru
          CMP AX,32767
          JA No_Good
  Good:CLC
       JNC Thru
  No_Good:STC
  Thru:POP CX
       POP BX
  RET
ASCII_BIN ENDP
;********************************************
CONV_AB PROC
  push BP
  push BX
  push SI
  Mov BP,BX
  Sub BX,BX
  Chk_Pt:CMP DX,0
         JNZ Range
         CMP byte PTR DS:[BP],'.'
         JNE Range
         Dec CX
         Mov DX,CX
         JZ End_Conv
         Inc BP
  Range:CMP byte PTR DS:[BP],'0'
        JB Non_Dig
        CMP byte PTR DS:[BP],'9'
        JBE Digit
  Non_Dig:Mov DI,BP
          STC
          JC End_Conv
  Digit:Mov SI,10
        push DX
        MUL SI
        POP DX
        Mov BL,DS:[BP]
        And BX,0FH
        Add AX,BX
        JC End_Conv
        Inc BP
        LOOP Chk_Pt
        CLC
  End_Conv:POP SI
           POP BX
           POP BP
  RET
CONV_AB Endp
  

prt proc
; ў ॣЁбвॠdx еа *Ёвбп  ¤аҐб * з «  ⥪бв  Є®в®ал© *г¦*® * ЇҐз в вм
push ax
mov ah,09h
int 21h
pop ax
ret
prt endp

prn proc
; ў ॣЁбвॠax еа *Ёвбп 楫®Ґ зЁб«® Є®в®а®Ґ *г¦*® * ЇҐз в вм
push bx
push dx
push ax
lea bx,buffer
call convba
mov dx,bx
mov ah,09h
int 21h
pop ax
pop dx
pop bx
ret
prn endp

NL proc
push dx
lea dx,NEW_LINE
CALL PRT
pop dx
ret
NL endp

PROBEL proc
push dx
lea dx,pr1
CALL PRT
pop dx
ret
PROBEL endp

CODES ENDS
END MAIN
Ответить с цитированием
  (#2 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 04.06.2003, 00:34

Гы! У тебя с кодировкой проблема...
Написал бы хоть, как она глюкает. И вообще, чего она делать должна???
Ответить с цитированием
  (#3 (permalink)) Старый
Belldandy Belldandy вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.06.2003
По умолчанию Уточнения - 04.06.2003, 07:33

С кодировкой все нормально
я ж написала - Ассм для ДОСА
прога в начала предлагает ввести все аргументы кроме У
Y= A+(B-C)*D, если 0<=С<2
A+B/C во всех остальных случаях
С меняется от CN до СК с шагом DELC.
Ответить с цитированием
  (#4 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 04.06.2003, 18:39

И как он глюкает?
Только под XP? Под другими операционками работает?
Ответить с цитированием
  (#5 (permalink)) Старый
Belldandy Belldandy вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.06.2003
По умолчанию Реплай - 05.06.2003, 07:09

глюкает так: после ввода коэффициентов.. то может комп повесить то
решает систему, но по-моему не так как надо ^_^
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти ошибки в программном коде NotFound Assembler 0 03.04.2011 11:57
Как исправить ошибки в программном коде Julia220992 Visual Basic 1 30.04.2010 22:09
Как исправить ошибки в программном коде imported_Witcher Lisp 1 06.06.2009 14:54
Исправление ошибки в программном коде berserker Вопросы начинающих программистов 1 11.01.2009 14:01
Как устранить ошибки в программном коде Наташа85 Java 2 04.12.2008 14:17
Как исправить ошибку в программном коде berserker Delphi 2 10.08.2007 15:19
Как исправить ошибки в программном коде _sg Lisp 0 29.07.2007 10:24
Как исправить ошибку в программном коде fikys Delphi 7 07.06.2007 15:28
Как исправить ошибку в программном коде costa WinAPI 1 21.02.2007 22:12
Как исправить ошибки в программном коде MoonChild WinAPI 19 03.08.2005 19:17
Как исправить ошибки в программном коде atomsk С/С++ 11 14.06.2005 04:38
Как найти ошибки в программном коде Regbist Assembler 6 04.05.2005 10:52



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов