149 lines
2.4 KiB
NASM
149 lines
2.4 KiB
NASM
|
; Tests for opcode range 0x50-0x5F
|
||
|
; ---------------------------------
|
||
|
|
||
|
; 0x50 - PUSH AX
|
||
|
; 0x51 - PUSH CX
|
||
|
; 0x52 - PUSH DX
|
||
|
; 0x53 - PUSH BX
|
||
|
; 0x54 - PUSH SP
|
||
|
; 0x55 - PUSH BP
|
||
|
; 0x56 - PUSH SI
|
||
|
; 0x57 - PUSH DI
|
||
|
; ############################################################
|
||
|
|
||
|
TEST_50_0:
|
||
|
|
||
|
mov ax,0AAAA
|
||
|
mov cx,0CCCC
|
||
|
mov dx,0DDDD
|
||
|
mov bx,0BBBB
|
||
|
mov bp,02222
|
||
|
mov si,03333
|
||
|
mov di,04444
|
||
|
|
||
|
push ax
|
||
|
push cx
|
||
|
push dx
|
||
|
push bx
|
||
|
push bp
|
||
|
push si
|
||
|
push di
|
||
|
|
||
|
mov bx,sp
|
||
|
cmp word[bx],04444
|
||
|
jne FAIL_50_0
|
||
|
|
||
|
cmp word[bx+02],03333
|
||
|
jne FAIL_50_0
|
||
|
|
||
|
cmp word[bx+04],02222
|
||
|
jne FAIL_50_0
|
||
|
|
||
|
cmp word[bx+06],0BBBB
|
||
|
jne FAIL_50_0
|
||
|
|
||
|
cmp word[bx+08],0DDDD
|
||
|
jne FAIL_50_0
|
||
|
|
||
|
cmp word[bx+0A],0CCCC
|
||
|
jne FAIL_50_0
|
||
|
|
||
|
cmp word[bx+0C],0AAAA
|
||
|
jne FAIL_50_0
|
||
|
|
||
|
mov dx,sp ; Test PUSH SP
|
||
|
sub dx,00002
|
||
|
push sp
|
||
|
mov bx,sp
|
||
|
cmp word[bx],dx
|
||
|
jne FAIL_50_0
|
||
|
jmp TEST_58_0
|
||
|
|
||
|
|
||
|
|
||
|
FAIL_50_0:
|
||
|
mov dx,00030 ; Print a 0
|
||
|
mov ax,00202
|
||
|
int 021
|
||
|
|
||
|
|
||
|
; 0x58 - POP AX
|
||
|
; 0x59 - POP CX
|
||
|
; 0x5A - POP DX
|
||
|
; 0x5B - POP BX
|
||
|
; 0x5C - POP SP
|
||
|
; 0x5D - POP BP
|
||
|
; 0x5E - POP SI
|
||
|
; 0x5F - POP DI
|
||
|
; ############################################################
|
||
|
|
||
|
TEST_58_0:
|
||
|
mov ax,01111
|
||
|
push ax
|
||
|
mov ax,02222
|
||
|
push ax
|
||
|
mov ax,03333
|
||
|
push ax
|
||
|
mov ax,04444
|
||
|
push ax
|
||
|
mov ax,05555
|
||
|
push ax
|
||
|
mov ax,06666
|
||
|
push ax
|
||
|
mov ax,07777
|
||
|
push ax
|
||
|
|
||
|
pop ax
|
||
|
cmp ax,07777
|
||
|
jne FAIL_58_0
|
||
|
|
||
|
pop cx
|
||
|
cmp cx,06666
|
||
|
jne FAIL_58_0
|
||
|
|
||
|
pop dx
|
||
|
cmp dx,05555
|
||
|
jne FAIL_58_0
|
||
|
|
||
|
pop bx
|
||
|
cmp bx,04444
|
||
|
jne FAIL_58_0
|
||
|
|
||
|
pop bp
|
||
|
cmp bp,03333
|
||
|
jne FAIL_58_0
|
||
|
|
||
|
pop si
|
||
|
cmp si,02222
|
||
|
jne FAIL_58_0
|
||
|
|
||
|
pop di
|
||
|
cmp di,01111
|
||
|
jne FAIL_58_0
|
||
|
|
||
|
mov ax,01234
|
||
|
push ax
|
||
|
pop sp
|
||
|
mov bx,sp
|
||
|
cmp bx,01234
|
||
|
jne FAIL_58_0
|
||
|
|
||
|
jmp Z_END
|
||
|
|
||
|
|
||
|
FAIL_58_0:
|
||
|
mov dx,00038 ; Print a 8
|
||
|
mov ax,00202
|
||
|
int 021
|
||
|
|
||
|
|
||
|
; xxxxxxxxxxxxxxxxxxxxxxx
|
||
|
; End
|
||
|
; xxxxxxxxxxxxxxxxxxxxxxx
|
||
|
Z_END:
|
||
|
mov ax,00000 ; DOS Command=Exit
|
||
|
int 021
|
||
|
|
||
|
|
||
|
|