Вычитание трех целых чисел в сборке (MASM) - PullRequest
0 голосов
/ 15 февраля 2011

Используя программу AddSub , напишите программу, которая вычитает три целых числа, используя только 16-битные регистры.Вставьте оператор call DumpRegs для отображения значений регистра.

Пример программы AddSub:

TITLE Add and Subtract, Version 2 (AddSub2.asm)
; This program adds and subtracts 32-bit unsigned
; integers and stores the sum in a variable.
INCLUDE Irvine32.inc
.data
val1 DWORD 10000h
val2 DWORD 40000h
val3 DWORD 20000h
finalVal DWORD ?
.code
main PROC
mov eax,val1 ; start with 10000h
add eax,val2 ; add 40000h
sub eax,val3 ; subtract 20000h
mov finalVal,eax ; store the result (30000h)
call DumpRegs ; display the registers
exit
main ENDP
END main
How does it work? First,

Ответы [ 2 ]

0 голосов
/ 16 сентября 2016

Вопрос: Используя программу ADDSUB из раздела 3.2 в качестве справки, напишите программу, которая вычитает три целых числа только из 16-разрядных регистров.Вставьте оператор cal DumpRegs для отображения значений регистра

Работа:

TITLE Add and Subtract      (AddSub.asm)

; Program Assignment 1 - Subtracting Three Integers   
; Using the AddSub program From Section 3.2 as a Reference,  
; Write a program that subtracts three Integer using only 16-bit     registers,  
; Insert a call DumpRegs statement to display the register values.

INCLUDE Irvine32.inc

 .code
 main PROC

 mov eax, 90000h    ;EAX = 10000h  
 sub eax, 40000h    ;EAX = 50000h   
 sub eax, 20000h    ;EAX = 30000h   
 call DumpRegs                ; display registers    

   exit    

   main ENDP   

   END main
0 голосов
/ 15 февраля 2011

Не зная программу «addSub», вам, вероятно, нужно знать только теорию чисел со знаком (дополнение к двум) и код операции для 0-x.(NEG)

Пример восьми битов, 5-10-20

ldi a,5
ldi b,10
ldi c,20

neg b
neg c
addc a,b
addc a,c

ок?

...