У меня 3 задачки и никак не могу решить нормально =( Помогите плиз. У меня опыта нету но имею основу на асм. А так работаю на .Нет платформе. Вот и задачки. 1. (c+4*d-123)/(1-a/2) решить для Byte и Word переменных (2 программы получаеться); Ответы для DB переменных выйдет на DW, а для DW переменных на DD. 2. | (a - b) / a - 3 if a > b X ={ 2 if a = 2 | (a*a*a + 1) / b if a < b Решить для signed and unsigned word 3. Найти произведение элементов массива A = {a}, удов. условию: с <= a <= d Решить для signed and unsigned word Буду оч благодарен!!! Если будет помощь на C++ или на C# помогу! Заранее пасиб!!!
3 дня сижу с первой задачкой получился вот что для DB Код (Text): title 'lab_1' ; (c+4*d-123)/(1-a/2) .model small .data a db 6 c db -3 d db -3 r1 dw ? r2 dw ? r dw ? .code start: mov ax,@data mov ds, ax ;set segment register mov al, d mov bl, 4 imul bl mov bx, ax mov al, c cbw add ax, bx sub ax, 123 mov r1, ax ; (c+4*d-123) mov ax, 0 mov bx, 0 mov al, a mov bl, 2 idiv bl cwd mov bx, ax mov ax, 1 sub ax, bx mov r2, ax ; (1-a/2) mov ax, r1 mov bx, r2 idiv bx mov r, ax ; otvet mov ax,4c00h ; terminate program int 21h end start и не правильно работает =)
_ts_ Код (Text): ; (c+4*d-123)/(1-a/2) .286 .model tiny .code org 100h start: mov al,d shl al,2 add al,c sub al,123 mov bl,a shr bl,1 not bl cbw idiv bl cbw mov r,ax ; otvet ret; terminate program a db 6 c db -3 d db -3 r dw ? end start
не работает. у теа задачка помоему другая. В Турбо Дебаггере сморю ответ другой У меня проблема в самом последнем делении. r1 = ff76(-138) and r2 = fffe (-2) када делиться то получаеться r = 8045 а надо r = 0045
_ts_ а о разнице между СОМ и ЕХЕ знаешь? Код (Text): ; (c+4*d-123)/(1-a/2) .286 .model tiny .code org 100h start: mov al,d; AL=FD=-3 cbw; AX=FFFD=-3 shl ax,2; AX=FFF4=-12 add al,c; AX=FFF1=-15 sub ax,123; AX=FF76=-138 mov bl,a;BL=6 shr bl,1; BL=3 neg bl; BL=FD=-3 inc bl; BL = FE=-2 idiv bl; AH=00 остаток AL=45h=69 частное -138/(-2)=69 cbw ; AX=45h mov r,ax ; otvet ret; terminate program a db 6 c db -3 d db -3 r dw ? end start
пасиб работает !!! для DW сделал Код (Text): mov ax,d; AX=FFFD=-3 cwd; AX=FFFD=-3 DX = FFFF = -1 shl ax,2; AX=FFF4=-12 add ax,c; AX=FFF1=-15 sub ax,123; AX=FF76=-138 mov bx,a;BX=6 shr bx,1; BX=3 neg bx; BX=FFFD=-3 inc bx; BX = FFFE=-2 idiv bx; 138/(-2)=69 cwd ; AX=45h mov word ptr r,ax ; otvet mov word ptr r + 2,dx ; otvet