Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2011, 13:15   #1
Сметуська
 
Регистрация: 14.03.2011
Сообщений: 5
По умолчанию Ошибка деления на ноль

Паскаль подключает модуль ассемблера где асм должен посчитать пример
(2*с+d-52)/(a/4+1), для ShortInt считает правильно а вот для Integer выводит ошибку деления на ноль, помогите если не сложно
З.Ы. заранее благодарна
Код:
.Model Large, Pascal
.data
Extrn Numerator:Dword
Extrn aS:Byte, ccS:Byte,dds:Byte
Extrn xI:Word
Extrn Denominator:Word
Extrn aai:WORD, cci:Word , ddi:Word
.code
Public Lab3S
Lab3S proc far

;==================8-битный ассмеблер (shortint)==============

; знаменатель - Denominator--------------------
	mov aL,aS	; A => AL
	cbw
	mov bl,4	; 4 =>BL
	idiv bl		; <ax>=a/4 
	inc ax		; <ax>=a/4+1
	mov Denominator,ax
;--------------------—числитель - Numerator--------------------
	mov al,ccS	; c=>AL
	mov bl,2	; 2=>BL
	imul bl		; <bx>=2*c
	push ax		
	mov al,ddS	; D=>AL
	CBW
	pop bx		
	add ax,bx	; ax=D+2c
	sub ax,52	; ax=D+2c-52
	CWD		
	mov word ptr numerator,ax	
	mov word ptr numerator+2,dx	
;----------------------результат------------------------------
idiv denominator	
mov xI,ax		
re


;==================16-битный ассемблер (integer)==============

lab3s endp

	public lab3l
lab3l proc far
;=================знаменатель============================
	mov ax,aai 	; A=>AL
	mov bl,4	; 4=>BL
	idiv bl		; <ax>=a/4 
	inc al		; <ax>=a/4+1	
	cbw	
	mov denominator,ax
;=================числитель===============================	
	mov bx,cci	; c=>al
	mov ax,2	; 2=>bl
	imul bx		; <bx>=2*c
	mov bx,ddi	; d=>al
	add ax,bx
	adc dx,0
	sub ax,52
	sbb dx,0
	mov word ptr numerator, ax
	mov word ptr numerator+2,dx
mov ax,dx
;=================результат===============================
	idiv denominator
	mov xI,ax
ret 
lab3l endp
end
Вложения
Тип файла: rar Код.rar (14.9 Кб, 9 просмотров)
Сметуська вне форума Ответить с цитированием
Старый 14.03.2011, 13:45   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Сметуська
Смысл писать одно и то же на всех ассемблерных форумах?
Mikl___ вне форума Ответить с цитированием
Старый 14.03.2011, 18:13   #3
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Цитата:
Сообщение от Mikl___ Посмотреть сообщение
Сметуська
Смысл писать одно и то же на всех ассемблерных форумах?
очевидно же, что для того чтобы проверить теорию вероятности.
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка деления на ноль El_Blasto Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 16.12.2010 10:09
Delphi, ошибка деления на ноль, хотя знаменатель не ноль Эренка Помощь студентам 7 22.04.2010 15:56
Ошибка деления на ноль nolz Помощь студентам 3 07.03.2010 13:14
Игра,угадай задуманное число,Ошибка деления на ноль!!! Rid Помощь студентам 4 22.10.2009 21:12
Проверка деления на ноль (Как проверить?) Moonka Помощь студентам 10 23.04.2007 19:41