ЯЗЫК АССАМБЛЕИ 8086:
Я сделал программу для добавления, она принимает два значения в консоли и дает нам результат.. она может принимать значение только ниже 32 бита (8 цифр), если мы дадим более высокое значение, то это даст ошибку целого числа переполнение в консоли winbdow..
Если я хочу дать более 32-битное значение в input1 и input2, как я это сделаю? это можно сделать, создав массив DWORD (32 бита) и поместив половину (16 бит) половину (16 бит) значений
например:
массив1 DWORD 2 DUP(?)
массив2 DWORD 2 DUP(?)
Я хочу добавить значение1 к значению2 с помощью 32-битного регистра и дать значение под 64-битным (равно 16 цифрам).. Можно ли использовать пространство 2 рег (32 + 32 = 64 бит)?...
Как мы можем сделать 2 32-битных регистра, чтобы сделать их 64-битными, я знаю, что это возможно, но я не знаю, как это сделать... потому что я новичок в языке ассемблера.
Я использую библиотеки ссылок KIP.R.IRVINE на языке ассемблера.
как мы дадим 64-битное значение, используя 2 32-битных регистра? или как мы разрешим 2 32-битным регистрам принимать 64-битные значения? я не знаю, как это кодировать..нужна помощь в кодировании
вот код для 32-битного добавления:
INCLUDE Irvine32.inc
; In above i am calling KIP.R.IRVINE Link Library for assembly language
.data
Addition BYTE "A: Add two Integer Numbers", 0
inputValue1st BYTE "Input the 1st integer = ",0
inputValue2nd BYTE "Input the 2nd integer = ",0
outputSumMsg BYTE "The sum of the two integers is = ",0
num1 DD ?
num2 DD ?
sum DD ?
.code
main PROC
;----Displays addition Text-----
mov edx, OFFSET Addition
call WriteString
call Crlf
;-------------------------------
; calling procedures here
call InputValues
call addValue
call outputValue
call Crlf
jmp exitLabel
main ENDP
; the PROCEDURES which i have made is here
InputValues PROC
;----------- For 1st Value--------
call Crlf
mov edx,OFFSET inputValue1st ; input text1
call WriteString
; here it is taking 1st value
call ReadInt ; read integer
mov num1, eax ; store the value
;-----------For 2nd Value----------
mov edx,OFFSET inputValue2nd ; input text2
call WriteString
; here it is taking 2nd value
call ReadInt ; read integer
mov num2, eax ; store the value
ret
InputValues ENDP
;---------Adding Sum----------------
addValue PROC
; compute the sum
mov eax, num2 ; moves num2 to eax
add eax, num1 ; adds num2 to num1
mov sum, eax ; the val is stored in eax
ret
addValue ENDP
;--------For Sum Output Result----------
outputValue PROC
; output result
mov edx, OFFSET outputSumMsg ; Output text
call WriteString
mov eax, sum
call WriteInt ; prints the value in eax
ret
outputValue ENDP
exitLabel:
exit
END main