shell.esm
来自「开放源码的编译器open watcom 1.6.0版的源代码」· ESM 代码 · 共 80 行
ESM
80 行
.387
PUBLIC multiply_
DGROUP GROUP CONST,CONST2,_DATA
_TEXT SEGMENT BYTE PUBLIC USE16 'CODE'
ASSUME CS:_TEXT, DS:DGROUP, SS:DGROUP
multiply_:
mov ax,3
push ax
xor ax,ax
L$1:
test word ptr 2[di],8000H
jne L$2
shl word ptr [di],1
rcl word ptr 2[di],1
shl word ptr [si],1
rcl word ptr 2[si],1
rcl word ptr 4[si],1
rcl word ptr 6[si],1
rcl ax,1
jmp L$1
L$2:
mov bx,ax
mov cx,0ffffH
mul cx
add ax,bx
adc dx,0
add ax,word ptr 6[si]
adc dx,0
mov cx,dx
mov bx,ax
div word ptr 2[di]
push ax
mul word ptr 2[di]
sub bx,ax
sbb cx,dx
pop ax
mov word ptr 6[si],ax
mul word ptr [di]
test cx,cx
jne L$5
L$3:
cmp dx,bx
jb L$5
ja L$4
cmp ax,word ptr 4[si]
jbe L$5
L$4:
dec word ptr 6[si]
sub ax,word ptr [di]
sbb dx,0
add bx,word ptr 2[di]
adc cx,0
jmp L$3
L$5:
sub word ptr 4[si],ax
sbb bx,dx
mov word ptr 6[si],bx
sbb cx,0
pop dx
dec dx
cmp dx,2
je L$6
mov word ptr 8[si],cx
test dx,dx
je L$7
L$6:
sub si,2
mov ax,bx
push dx
jmp L$2
L$7:
_TEXT ENDS
CONST SEGMENT WORD PUBLIC USE16 'DATA'
CONST ENDS
CONST2 SEGMENT WORD PUBLIC USE16 'DATA'
CONST2 ENDS
_DATA SEGMENT WORD PUBLIC USE16 'DATA'
_DATA ENDS
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?