780 lines
16 KiB
NASM
780 lines
16 KiB
NASM
; Tests for opcode range 0x40-0x4F
|
|
; ---------------------------------
|
|
|
|
|
|
; 0x40 - INC AX
|
|
; ############################################################
|
|
|
|
TEST_40_0:
|
|
mov ax,01234
|
|
inc ax
|
|
cmp ax,01235
|
|
jne FAIL_40_0
|
|
|
|
mov ax,07FFF
|
|
inc ax ; Overflow should be set
|
|
jno FAIL_40_0
|
|
|
|
mov ax,00044
|
|
inc ax ; Overflow should not be set
|
|
jo FAIL_40_0
|
|
|
|
mov ax,07FFF
|
|
inc ax ; Sign should be set
|
|
jns FAIL_40_0
|
|
|
|
mov ax,00044
|
|
inc ax ; Sign should not be set
|
|
js FAIL_40_0
|
|
|
|
mov ax,0FFFF
|
|
inc ax ; Zero should be set
|
|
jnz FAIL_40_0
|
|
|
|
mov ax,00044
|
|
inc ax ; Zero should not be set
|
|
jz FAIL_40_0
|
|
|
|
mov ax,04410
|
|
inc ax ; Parity should be set
|
|
jnp FAIL_40_0
|
|
|
|
mov ax,04400
|
|
inc ax ; Parity should not be set
|
|
jp FAIL_40_0
|
|
jmp TEST_41_0
|
|
|
|
FAIL_40_0:
|
|
mov dx,00030 ; Print a 0
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x41 - INC CX
|
|
; ############################################################
|
|
|
|
TEST_41_0:
|
|
mov cx,01234
|
|
inc cx
|
|
cmp cx,01235
|
|
jne FAIL_41_0
|
|
|
|
mov cx,07FFF
|
|
inc cx ; Overflow should be set
|
|
jno FAIL_41_0
|
|
|
|
mov cx,00044
|
|
inc cx ; Overflow should not be set
|
|
jo FAIL_41_0
|
|
|
|
mov cx,07FFF
|
|
inc cx ; Sign should be set
|
|
jns FAIL_41_0
|
|
|
|
mov cx,00044
|
|
inc cx ; Sign should not be set
|
|
js FAIL_41_0
|
|
|
|
mov cx,0FFFF
|
|
inc cx ; Zero should be set
|
|
jnz FAIL_41_0
|
|
|
|
mov cx,00044
|
|
inc cx ; Zero should not be set
|
|
jz FAIL_41_0
|
|
|
|
mov cx,04410
|
|
inc cx ; Parity should be set
|
|
jnp FAIL_41_0
|
|
|
|
mov cx,04400
|
|
inc cx ; Parity should not be set
|
|
jp FAIL_41_0
|
|
jmp TEST_42_0
|
|
|
|
FAIL_41_0:
|
|
mov dx,00031 ; Print a 1
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x42 - INC DX
|
|
; ############################################################
|
|
|
|
TEST_42_0:
|
|
mov dx,01234
|
|
inc dx
|
|
cmp dx,01235
|
|
jne FAIL_42_0
|
|
|
|
mov dx,07FFF
|
|
inc dx ; Overflow should be set
|
|
jno FAIL_42_0
|
|
|
|
mov dx,00044
|
|
inc dx ; Overflow should not be set
|
|
jo FAIL_42_0
|
|
|
|
mov dx,07FFF
|
|
inc dx ; Sign should be set
|
|
jns FAIL_42_0
|
|
|
|
mov dx,00044
|
|
inc dx ; Sign should not be set
|
|
js FAIL_42_0
|
|
|
|
mov dx,0FFFF
|
|
inc dx ; Zero should be set
|
|
jnz FAIL_42_0
|
|
|
|
mov dx,00044
|
|
inc dx ; Zero should not be set
|
|
jz FAIL_42_0
|
|
|
|
mov dx,04410
|
|
inc dx ; Parity should be set
|
|
jnp FAIL_42_0
|
|
|
|
mov dx,04400
|
|
inc dx ; Parity should not be set
|
|
jp FAIL_42_0
|
|
jmp TEST_43_0
|
|
|
|
FAIL_42_0:
|
|
mov dx,00032 ; Print a 2
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x43 - INC BX
|
|
; ############################################################
|
|
|
|
TEST_43_0:
|
|
mov bx,01234
|
|
inc bx
|
|
cmp bx,01235
|
|
jne FAIL_43_0
|
|
|
|
mov bx,07FFF
|
|
inc bx ; Overflow should be set
|
|
jno FAIL_43_0
|
|
|
|
mov bx,00044
|
|
inc bx ; Overflow should not be set
|
|
jo FAIL_43_0
|
|
|
|
mov bx,07FFF
|
|
inc bx ; Sign should be set
|
|
jns FAIL_43_0
|
|
|
|
mov bx,00044
|
|
inc bx ; Sign should not be set
|
|
js FAIL_43_0
|
|
|
|
mov bx,0FFFF
|
|
inc bx ; Zero should be set
|
|
jnz FAIL_43_0
|
|
|
|
mov bx,00044
|
|
inc bx ; Zero should not be set
|
|
jz FAIL_43_0
|
|
|
|
mov bx,04410
|
|
inc bx ; Parity should be set
|
|
jnp FAIL_43_0
|
|
|
|
mov bx,04400
|
|
inc bx ; Parity should not be set
|
|
jp FAIL_43_0
|
|
jmp TEST_44_0
|
|
|
|
FAIL_43_0:
|
|
mov dx,00033 ; Print a 3
|
|
mov ax,00202
|
|
int 021
|
|
|
|
; 0x44 - INC SP
|
|
; ############################################################
|
|
|
|
TEST_44_0:
|
|
mov sp,01234
|
|
inc sp
|
|
cmp sp,01235
|
|
jne FAIL_44_0
|
|
|
|
mov sp,07FFF
|
|
inc sp ; Overflow should be set
|
|
jno FAIL_44_0
|
|
|
|
mov sp,00044
|
|
inc sp ; Overflow should not be set
|
|
jo FAIL_44_0
|
|
|
|
mov sp,07FFF
|
|
inc sp ; Sign should be set
|
|
jns FAIL_44_0
|
|
|
|
mov sp,00044
|
|
inc sp ; Sign should not be set
|
|
js FAIL_44_0
|
|
|
|
mov sp,0FFFF
|
|
inc sp ; Zero should be set
|
|
jnz FAIL_44_0
|
|
|
|
mov sp,00044
|
|
inc sp ; Zero should not be set
|
|
jz FAIL_44_0
|
|
|
|
mov sp,04410
|
|
inc sp ; Parity should be set
|
|
jnp FAIL_44_0
|
|
|
|
mov sp,04400
|
|
inc sp ; Parity should not be set
|
|
jp FAIL_44_0
|
|
jmp TEST_45_0
|
|
|
|
FAIL_44_0:
|
|
mov dx,00034 ; Print a 4
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x45 - INC BP
|
|
; ############################################################
|
|
|
|
TEST_45_0:
|
|
mov bp,01234
|
|
inc bp
|
|
cmp bp,01235
|
|
jne FAIL_45_0
|
|
|
|
mov bp,07FFF
|
|
inc bp ; Overflow should be set
|
|
jno FAIL_45_0
|
|
|
|
mov bp,00044
|
|
inc bp ; Overflow should not be set
|
|
jo FAIL_45_0
|
|
|
|
mov bp,07FFF
|
|
inc bp ; Sign should be set
|
|
jns FAIL_45_0
|
|
|
|
mov bp,00044
|
|
inc bp ; Sign should not be set
|
|
js FAIL_45_0
|
|
|
|
mov bp,0FFFF
|
|
inc bp ; Zero should be set
|
|
jnz FAIL_45_0
|
|
|
|
mov bp,00044
|
|
inc bp ; Zero should not be set
|
|
jz FAIL_45_0
|
|
|
|
mov bp,04410
|
|
inc bp ; Parity should be set
|
|
jnp FAIL_45_0
|
|
|
|
mov bp,04400
|
|
inc bp ; Parity should not be set
|
|
jp FAIL_45_0
|
|
jmp TEST_46_0
|
|
|
|
FAIL_45_0:
|
|
mov dx,00035 ; Print a 5
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x46 - INC SI
|
|
; ############################################################
|
|
|
|
TEST_46_0:
|
|
mov si,01234
|
|
inc si
|
|
cmp si,01235
|
|
jne FAIL_46_0
|
|
|
|
mov si,07FFF
|
|
inc si ; Overflow should be set
|
|
jno FAIL_46_0
|
|
|
|
mov si,00044
|
|
inc si ; Overflow should not be set
|
|
jo FAIL_46_0
|
|
|
|
mov si,07FFF
|
|
inc si ; Sign should be set
|
|
jns FAIL_46_0
|
|
|
|
mov si,00044
|
|
inc si ; Sign should not be set
|
|
js FAIL_46_0
|
|
|
|
mov si,0FFFF
|
|
inc si ; Zero should be set
|
|
jnz FAIL_46_0
|
|
|
|
mov si,00044
|
|
inc si ; Zero should not be set
|
|
jz FAIL_46_0
|
|
|
|
mov si,04410
|
|
inc si ; Parity should be set
|
|
jnp FAIL_46_0
|
|
|
|
mov si,04400
|
|
inc si ; Parity should not be set
|
|
jp FAIL_46_0
|
|
jmp TEST_47_0
|
|
|
|
FAIL_46_0:
|
|
mov dx,00036 ; Print a 6
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x47 - INC DI
|
|
; ############################################################
|
|
|
|
TEST_47_0:
|
|
mov di,01234
|
|
inc di
|
|
cmp di,01235
|
|
jne FAIL_47_0
|
|
|
|
mov di,07FFF
|
|
inc di ; Overflow should be set
|
|
jno FAIL_47_0
|
|
|
|
mov di,00044
|
|
inc di ; Overflow should not be set
|
|
jo FAIL_47_0
|
|
|
|
mov di,07FFF
|
|
inc di ; Sign should be set
|
|
jns FAIL_47_0
|
|
|
|
mov di,00044
|
|
inc di ; Sign should not be set
|
|
js FAIL_47_0
|
|
|
|
mov di,0FFFF
|
|
inc di ; Zero should be set
|
|
jnz FAIL_47_0
|
|
|
|
mov di,00044
|
|
inc di ; Zero should not be set
|
|
jz FAIL_47_0
|
|
|
|
mov di,04410
|
|
inc di ; Parity should be set
|
|
jnp FAIL_47_0
|
|
|
|
mov di,04400
|
|
inc di ; Parity should not be set
|
|
jp FAIL_47_0
|
|
jmp TEST_48_0
|
|
|
|
FAIL_47_0:
|
|
mov dx,00037 ; Print a 7
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x48 - DEC AX
|
|
; ############################################################
|
|
|
|
TEST_48_0:
|
|
mov ax,01234
|
|
dec ax
|
|
cmp ax,01233
|
|
jne FAIL_48_0
|
|
|
|
mov ax,08000
|
|
dec ax ; Overflow should be set
|
|
jno FAIL_48_0
|
|
|
|
mov ax,00044
|
|
dec ax ; Overflow should not be set
|
|
jo FAIL_48_0
|
|
|
|
mov ax,0FFFF
|
|
dec ax ; Sign should be set
|
|
jns FAIL_48_0
|
|
|
|
mov ax,00044
|
|
dec ax ; Sign should not be set
|
|
js FAIL_48_0
|
|
|
|
mov ax,00001
|
|
dec ax ; Zero should be set
|
|
jnz FAIL_48_0
|
|
|
|
mov ax,00044
|
|
dec ax ; Zero should not be set
|
|
jz FAIL_48_0
|
|
|
|
mov ax,04413
|
|
dec ax ; Parity should be set
|
|
jnp FAIL_48_0
|
|
|
|
mov ax,04411
|
|
dec ax ; Parity should not be set
|
|
jp FAIL_48_0
|
|
jmp TEST_49_0
|
|
|
|
FAIL_48_0:
|
|
mov dx,00038 ; Print a 8
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x49 - DEC CX
|
|
; ############################################################
|
|
|
|
TEST_49_0:
|
|
mov cx,01234
|
|
dec cx
|
|
cmp cx,01233
|
|
jne FAIL_49_0
|
|
|
|
mov cx,08000
|
|
dec cx ; Overflow should be set
|
|
jno FAIL_49_0
|
|
|
|
mov cx,00044
|
|
dec cx ; Overflow should not be set
|
|
jo FAIL_49_0
|
|
|
|
mov cx,0FFFF
|
|
dec cx ; Sign should be set
|
|
jns FAIL_49_0
|
|
|
|
mov cx,00044
|
|
dec cx ; Sign should not be set
|
|
js FAIL_49_0
|
|
|
|
mov cx,00001
|
|
dec cx ; Zero should be set
|
|
jnz FAIL_49_0
|
|
|
|
mov cx,00044
|
|
dec cx ; Zero should not be set
|
|
jz FAIL_49_0
|
|
|
|
mov cx,04413
|
|
dec cx ; Parity should be set
|
|
jnp FAIL_49_0
|
|
|
|
mov cx,04411
|
|
dec cx ; Parity should not be set
|
|
jp FAIL_49_0
|
|
jmp TEST_4A_0
|
|
|
|
FAIL_49_0:
|
|
mov dx,00039 ; Print a 9
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x4A - DEC DX
|
|
; ############################################################
|
|
|
|
TEST_4A_0:
|
|
mov dx,01234
|
|
dec dx
|
|
cmp dx,01233
|
|
jne FAIL_4A_0
|
|
|
|
mov dx,08000
|
|
dec dx ; Overflow should be set
|
|
jno FAIL_4A_0
|
|
|
|
mov dx,00044
|
|
dec dx ; Overflow should not be set
|
|
jo FAIL_4A_0
|
|
|
|
mov dx,0FFFF
|
|
dec dx ; Sign should be set
|
|
jns FAIL_4A_0
|
|
|
|
mov dx,00044
|
|
dec dx ; Sign should not be set
|
|
js FAIL_4A_0
|
|
|
|
mov dx,00001
|
|
dec dx ; Zero should be set
|
|
jnz FAIL_4A_0
|
|
|
|
mov dx,00044
|
|
dec dx ; Zero should not be set
|
|
jz FAIL_4A_0
|
|
|
|
mov dx,04413
|
|
dec dx ; Parity should be set
|
|
jnp FAIL_4A_0
|
|
|
|
mov dx,04411
|
|
dec dx ; Parity should not be set
|
|
jp FAIL_4A_0
|
|
jmp TEST_4B_0
|
|
|
|
FAIL_4A_0:
|
|
mov dx,00041 ; Print a A
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x4B - DEC BX
|
|
; ############################################################
|
|
|
|
TEST_4B_0:
|
|
mov bx,01234
|
|
dec bx
|
|
cmp bx,01233
|
|
jne FAIL_4B_0
|
|
|
|
mov bx,08000
|
|
dec bx ; Overflow should be set
|
|
jno FAIL_4B_0
|
|
|
|
mov bx,00044
|
|
dec bx ; Overflow should not be set
|
|
jo FAIL_4B_0
|
|
|
|
mov bx,0FFFF
|
|
dec bx ; Sign should be set
|
|
jns FAIL_4B_0
|
|
|
|
mov bx,00044
|
|
dec bx ; Sign should not be set
|
|
js FAIL_4B_0
|
|
|
|
mov bx,00001
|
|
dec bx ; Zero should be set
|
|
jnz FAIL_4B_0
|
|
|
|
mov bx,00044
|
|
dec bx ; Zero should not be set
|
|
jz FAIL_4B_0
|
|
|
|
mov bx,04413
|
|
dec bx ; Parity should be set
|
|
jnp FAIL_4B_0
|
|
|
|
mov bx,04411
|
|
dec bx ; Parity should not be set
|
|
jp FAIL_4B_0
|
|
jmp TEST_4C_0
|
|
|
|
FAIL_4B_0:
|
|
mov dx,00042 ; Print a B
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x4C - DEC SP
|
|
; ############################################################
|
|
|
|
TEST_4C_0:
|
|
mov sp,01234
|
|
dec sp
|
|
cmp sp,01233
|
|
jne FAIL_4C_0
|
|
|
|
mov sp,08000
|
|
dec sp ; Overflow should be set
|
|
jno FAIL_4C_0
|
|
|
|
mov sp,00044
|
|
dec sp ; Overflow should not be set
|
|
jo FAIL_4C_0
|
|
|
|
mov sp,0FFFF
|
|
dec sp ; Sign should be set
|
|
jns FAIL_4C_0
|
|
|
|
mov sp,00044
|
|
dec sp ; Sign should not be set
|
|
js FAIL_4C_0
|
|
|
|
mov sp,00001
|
|
dec sp ; Zero should be set
|
|
jnz FAIL_4C_0
|
|
|
|
mov sp,00044
|
|
dec sp ; Zero should not be set
|
|
jz FAIL_4C_0
|
|
|
|
mov sp,04413
|
|
dec sp ; Parity should be set
|
|
jnp FAIL_4C_0
|
|
|
|
mov sp,04411
|
|
dec sp ; Parity should not be set
|
|
jp FAIL_4C_0
|
|
jmp TEST_4D_0
|
|
|
|
FAIL_4C_0:
|
|
mov dx,00043 ; Print a C
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x4D - DEC BP
|
|
; ############################################################
|
|
|
|
TEST_4D_0:
|
|
mov bp,01234
|
|
dec bp
|
|
cmp bp,01233
|
|
jne FAIL_4D_0
|
|
|
|
mov bp,08000
|
|
dec bp ; Overflow should be set
|
|
jno FAIL_4D_0
|
|
|
|
mov bp,00044
|
|
dec bp ; Overflow should not be set
|
|
jo FAIL_4D_0
|
|
|
|
mov bp,0FFFF
|
|
dec bp ; Sign should be set
|
|
jns FAIL_4D_0
|
|
|
|
mov bp,00044
|
|
dec bp ; Sign should not be set
|
|
js FAIL_4D_0
|
|
|
|
mov bp,00001
|
|
dec bp ; Zero should be set
|
|
jnz FAIL_4D_0
|
|
|
|
mov bp,00044
|
|
dec bp ; Zero should not be set
|
|
jz FAIL_4D_0
|
|
|
|
mov bp,04413
|
|
dec bp ; Parity should be set
|
|
jnp FAIL_4D_0
|
|
|
|
mov bp,04411
|
|
dec bp ; Parity should not be set
|
|
jp FAIL_4D_0
|
|
jmp TEST_4E_0
|
|
|
|
FAIL_4D_0:
|
|
mov dx,00044 ; Print a D
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x4E - DEC SI
|
|
; ############################################################
|
|
|
|
TEST_4E_0:
|
|
mov si,01234
|
|
dec si
|
|
cmp si,01233
|
|
jne FAIL_4E_0
|
|
|
|
mov si,08000
|
|
dec si ; Overflow should be set
|
|
jno FAIL_4E_0
|
|
|
|
mov si,00044
|
|
dec si ; Overflow should not be set
|
|
jo FAIL_4E_0
|
|
|
|
mov si,0FFFF
|
|
dec si ; Sign should be set
|
|
jns FAIL_4E_0
|
|
|
|
mov si,00044
|
|
dec si ; Sign should not be set
|
|
js FAIL_4E_0
|
|
|
|
mov si,00001
|
|
dec si ; Zero should be set
|
|
jnz FAIL_4E_0
|
|
|
|
mov si,00044
|
|
dec si ; Zero should not be set
|
|
jz FAIL_4E_0
|
|
|
|
mov si,04413
|
|
dec si ; Parity should be set
|
|
jnp FAIL_4E_0
|
|
|
|
mov si,04411
|
|
dec si ; Parity should not be set
|
|
jp FAIL_4E_0
|
|
jmp TEST_4F_0
|
|
|
|
FAIL_4E_0:
|
|
mov dx,00045 ; Print a E
|
|
mov ax,00202
|
|
int 021
|
|
|
|
|
|
; 0x4F - DEC DI
|
|
; ############################################################
|
|
|
|
TEST_4F_0:
|
|
mov di,01234
|
|
dec di
|
|
cmp di,01233
|
|
jne FAIL_4F_0
|
|
|
|
mov di,08000
|
|
dec di ; Overflow should be set
|
|
jno FAIL_4F_0
|
|
|
|
mov di,00044
|
|
dec di ; Overflow should not be set
|
|
jo FAIL_4F_0
|
|
|
|
mov di,0FFFF
|
|
dec di ; Sign should be set
|
|
jns FAIL_4F_0
|
|
|
|
mov di,00044
|
|
dec di ; Sign should not be set
|
|
js FAIL_4F_0
|
|
|
|
mov di,00001
|
|
dec di ; Zero should be set
|
|
jnz FAIL_4F_0
|
|
|
|
mov di,00044
|
|
dec di ; Zero should not be set
|
|
jz FAIL_4F_0
|
|
|
|
mov di,04413
|
|
dec di ; Parity should be set
|
|
jnp FAIL_4F_0
|
|
|
|
mov di,04411
|
|
dec di ; Parity should not be set
|
|
jp FAIL_4F_0
|
|
jmp Z_END
|
|
|
|
FAIL_4F_0:
|
|
mov dx,00046 ; Print a F
|
|
mov ax,00202
|
|
int 021
|
|
|
|
; xxxxxxxxxxxxxxxxxxxxxxx
|
|
; End
|
|
; xxxxxxxxxxxxxxxxxxxxxxx
|
|
Z_END:
|
|
mov ax,00000 ; DOS Command=Exit
|
|
int 021
|
|
|
|
|
|
|