Egy assembly program adat szegmense az alábbi formában lett definiálva: ADAT SEGMENT PARA PUBLIC 'DATA' A DW 1234h ; elojel nélküli word B DW -4 ; elojeles word D DB 100 ; elojel nélküli byte E DB -80 ; elojeles byte F DB 200 ; elojel nélküli byte G DW 30000 ; elojel nélküli word H DW 40000 ; elojel nélküli word ADAT ENDS ; Az ADAT szegmens vége Írj kódrészletet, ami a fent definiált adat szegmensében található adatokra kiszámolja az alábbi eredményeket: - A+B Feltehető, hogy az eredmény előjelen szó lesz, ami elfér 16 biten. - D+E Az eredmény előjeles érték lesz, ami elfér 8 biten. - D+F, E+F Az eredmény előjeles, és a tárolásához 16 bit kell majd. (Az bemeneteket előjelesen/előjel nélkülien ki kell terjeszteni!) - A+D, A-E, B-F Az eredmény előjeles, és a tárolásához 16 bit kell. (Különböző méretű számokat kell összeadni, a kissebbet megfelelően kiterjesztve.) - G+H, G-H Az eredmény egy 32 bites előjel nélküli szám. (Használni kell az ADC, vagy SBB utasításokat, és az előjel nélküli kiterjesztést.) - A*B, D*E, D*F Nem kell konverzió, az eredmény elfér a szorzat szorzás művelet által definiált területen. Figyelni az előjel/előjel nélküli adatok megkülönböztetésére, és hogy az adatok hány bitesek. - A/B, A/D, A/F Az eredmény legyen egy 16 bites szám. (A biztsonság kedvéért az sosztandó legyen kiterjesztve 32 bites számmá, hogy az osztásnál biztos elférjen az eredmény az AX regisztreben.) - D/E, D/F Az eredmény legyen egy 8 bites szám. (Az osztandót itt is ki kell terjeszteni 8-ról 16 bitre.) - (A+B)*(D+E), (A+E)/(B+D), ((E+F)*D)/(A+B) Itt már mindenre figyelni kell. Adatok, mérete, kiterjesztése, előjele, és fontos, hogy a szorzások/osztások eredménye mekkora regiszterekből mekkora regiszterekbe kerülnek. Extra: - Írj kódrészletet ami kiszímétja a G változó fizikai memóriacímét. Segítség: - Az adat szegmens báziscíme benne van a DS regiszterben, vagy belerakható mondjuk az AX regiszterbe a "MOV AX, ADAT" utasítással. - Az adatszegmens elemeinek az eltolás megszerezhető az "OFFSET [változó neve]" utasítással. pl.: "MOV BX, OFFSET G" ; belerakja a G eltolását a BX regiszterbe - Az eredmény egy 20 bites előjel nélküli szám, amit a legegyszerűbben 32 biten lehet tárolni (mondjuk például a DX:AX regiszterpárban). - Használni kell az ADC utasítást.