Консультация № 110318
20.11.2007, 18:46
0.00 руб.
0 2 2
Здравствуйте, Эксперты!!! Помогите, пожалуйста, разобраться. Например, надо сложить три числа:
Res=X+Y+Z, где x,y -однобайтные, z – четырехбайтное
Я пытаюсь, но пока мои попытки тщетны. Скажите, что я не так делаю и как нужно правильно писать.


Приложение:
;Res=X+Y+Z, где x,y-однобайтные, z - четырехбайтное ; Арифметическая операция ;Опишем сегмент кодаCode segment ;укажем соответсвие сегментных регистров сегментамassume cs:code, ds:data, ss: stekStart:; настроим регистр ds на сегмент данныхmov ax, datamov ds, axmov ax,x mov bx,y add ax,bx mov dword ptr Res,ax adc ax,z add [Res+2], ax ;Выход из программыmov ax,4c00hint 21hcode ends ;Опишем сегмент данныхdata segmentx db 58h ;число 58hy db 15h ;число 15hz dd 75757575h ;число 75757575hRes dd 0,0data ends;Опишем сегмент стекаstek segment stackdw 128 dup (?) ;под стек отводится 128 словstek endsend start

Обсуждение

Неизвестный
21.11.2007, 08:05
общий
это ответ
Здравствуйте, Алена!
...
xor ax,ax
xor bx,bx
mov al,x
mov bl,y
add ax,bx
add ax,word ptr z ;mojet vozniknut perenos
mov word ptr Res,ax;rezultat slojenia x y i mladshaia chast z
mov ax,word ptr [z+2]
adc word ptr [Res+2],ax
...
Неизвестный
22.11.2007, 11:03
общий
это ответ
Здравствуйте, Алена!
Не много подправил ваше приложение.
Удачи

Приложение:
;Res=X+Y+Z, где x,y-однобайтные, z - четырехбайтное ; Арифметическая операция ;Опишем сегмент кодаCode segment ;укажем соответсвие сегментных регистров сегментамassume cs:code, ds:data, ss: stek Start:; настроим регистр ds на сегмент данных mov ax, data mov ds, ax xor ax,ax ;ОБНУЛИМ РЕГИСТРЫ AX xor bx,bx ; И BX mov al,x ;X В AL mov bl,y ;Y В BL add ax,bx ;AX=AX+BX mov word ptr Res,ax ;ЗАПИШИМ В 1-Е СЛОВО RES ЗНАЧЕНИЕ СУММЫ mov ax,word ptr z ;В AX 1-Е СЛОВО ПЕРЕМЕННОЙ Z add word ptr res,ax ;СУММА 1-ГО СЛОВА RES С РЕГИСТРОМ AX mov ax,word ptr z+2 ;В AX СТАРШЕЕ СЛОВО ПЕРЕМЕННОЙ Z adc word ptr res+2,ax ;СЛОЖЕНИЕ С ПЕРЕНОСОМ ;ПЕРЕМЕНАЯ RES=X+Y+Z;Выход из программы mov ax,4c00h int 21hcode ends ;Опишем сегмент данныхdata segment x db 58h ;число 58h y db 15h ;число 15h z dd 75757575h ;число 75757575h Res dd 0data ends;Опишем сегмент стекаstek segment stack dw 128 dup (?) ;под стек отводится 128 словstek endsend start
Форма ответа