1.2 שלום עולם פתרון
תרגול 1 – הבנת רגיסטרים¶
תשובות תיאורטיות (אין צורך בקוד).
-
AX – לחשבון, BX – כתובות, CX – מונה, DX – כללי ו־I/O
-
AX בגודל 16 ביט. AH = 8 הביטים העליונים, AL = 8 הביטים התחתונים
-
AH = 0x5A, AL = 0x3C
תרגול 2 – שימוש ב־MOV ו־LEA¶
IDEAL
MODEL small
STACK 100h
DATASEG
myVal dw ?
CODESEG
start:
mov ax, @data
mov ds, ax
; תרגיל 1
mov bx, 1000
mov dx, bx
; תרגיל 2
mov myVal, 5
; תרגיל 3
mov bx, 20
lea si, [bx+10]
exit:
mov ax, 4c00h
int 21h
END start
תרגול 3 – פעולות חשבוניות¶
; תרגיל 1
mov ax, 20
add ax, 15
; תרגיל 2
sub ax, bx
; תרגיל 3
mov cx, 0
inc cx
inc cx
inc cx
; תרגיל 4
dec cx
dec cx
dec cx
תרגול 4 – כפל וחילוק¶
; תרגיל 1 – כפל 8 ביט
mov al, 10
mov bl, 3
mul bl ; AX = AL * BL
; תרגיל 2 – כפל 16 ביט
mov ax, 30
mov bx, 4
mul bx ; DX:AX = AX * BX
; תרגיל 3 – חילוק 8 ביט
mov ax, 1234h
mov bl, 10h
div bl ; AL = AX / BL ; AH = שארית
; תרגיל 4 – חילוק 16 ביט
mov dx, 0
mov ax, 1234h
mov cx, 10
div cx ; AX = DX:AX / CX ; DX = שארית
תרגול 5 – פעולות לוגיות¶
; תרגיל 1 – AND
mov al, 11110000b
and al, 00001111b
; תרגיל 2 – OR
mov al, 00000000b
or al, 00000011b ; מדליק שני ביטים אחרונים
; תרגיל 3 – XOR
mov al, 11111111b
xor al, 11001100b
; תרגיל 4 – אפס רגיסטר
xor ax, ax
; תרגיל 5 – NOT
mov bl, 11001100b
not bl
תרגול 6 – קריאה וכתיבה לזיכרון¶
DATASEG
var1 db ?
var2 db ?
var3 dw ?
CODESEG
start:
mov ax, @data
mov ds, ax
; תרגיל 1 – כתיבה
mov var1, 9
; תרגיל 2 – קריאה
mov al, var2
; תרגיל 3 – כתיבה של BX
mov bx, 0x1234
mov var3, bx