📄 x86w16.asm
字号:
; Static Name Aliases; TITLE bn_mulw.c .8087F_TEXT SEGMENT WORD PUBLIC 'CODE'F_TEXT ENDS_DATA SEGMENT WORD PUBLIC 'DATA'_DATA ENDS_CONST SEGMENT WORD PUBLIC 'CONST'_CONST ENDS_BSS SEGMENT WORD PUBLIC 'BSS'_BSS ENDSDGROUP GROUP _CONST, _BSS, _DATA ASSUME DS: DGROUP, SS: DGROUPF_TEXT SEGMENT ASSUME CS: F_TEXT PUBLIC _bn_mul_add_words_bn_mul_add_words PROC FAR; Line 58 push bp push bx push si push di push ds push es mov bp,sp; w = 26; num = 24; ap = 20; rp = 16 xor si,si ;c=0; mov di,WORD PTR [bp+16] ; load r mov ds,WORD PTR [bp+18] ; load r mov bx,WORD PTR [bp+20] ; load a mov es,WORD PTR [bp+22] ; load a mov cx,WORD PTR [bp+26] ; load w mov bp,WORD PTR [bp+24] ; load num shr bp,1 ; div count by 4 and do groups of 4 shr bp,1 je $L555$L546: mov ax,cx mul WORD PTR es:[bx] ; w* *a add ax,WORD PTR ds:[di] ; + *r adc dx,0 adc ax,si adc dx,0 mov WORD PTR ds:[di],ax mov si,dx ; mov ax,cx mul WORD PTR es:[bx+2] ; w* *a add ax,WORD PTR ds:[di+2] ; + *r adc dx,0 adc ax,si adc dx,0 mov WORD PTR ds:[di+2],ax mov si,dx ; mov ax,cx mul WORD PTR es:[bx+4] ; w* *a add ax,WORD PTR ds:[di+4] ; + *r adc dx,0 adc ax,si adc dx,0 mov WORD PTR ds:[di+4],ax mov si,dx ; mov ax,cx mul WORD PTR es:[bx+6] ; w* *a add ax,WORD PTR ds:[di+6] ; + *r adc dx,0 adc ax,si adc dx,0 mov WORD PTR ds:[di+6],ax mov si,dx ; add bx,8 add di,8 ; dec bp je $L555 jmp $L546;;$L555: mov bp,sp mov bp,WORD PTR [bp+24] ; load num and bp,3 dec bp js $L547 mov ax,cx mul WORD PTR es:[bx] ; w* *a add ax,WORD PTR ds:[di] ; + *r adc dx,0 adc ax,si adc dx,0 mov WORD PTR ds:[di],ax mov si,dx dec bp js $L547 ; Note that we are now testing for -1 ; mov ax,cx mul WORD PTR es:[bx+2] ; w* *a add ax,WORD PTR ds:[di+2] ; + *r adc dx,0 adc ax,si adc dx,0 mov WORD PTR ds:[di+2],ax mov si,dx dec bp js $L547 ; mov ax,cx mul WORD PTR es:[bx+4] ; w* *a add ax,WORD PTR ds:[di+4] ; + *r adc dx,0 adc ax,si adc dx,0 mov WORD PTR ds:[di+4],ax mov si,dx$L547: mov ax,si pop es pop ds pop di pop si pop bx pop bp ret nop _bn_mul_add_words ENDP PUBLIC _bn_mul_words_bn_mul_words PROC FAR; Line 76 push bp push bx push si push di push ds push es xor si,si mov bp,sp mov di,WORD PTR [bp+16] ; r mov ds,WORD PTR [bp+18] mov bx,WORD PTR [bp+20] ; a mov es,WORD PTR [bp+22] mov cx,WORD PTR [bp+26] ; w mov bp,WORD PTR [bp+24] ; num $FC743: mov ax,cx mul WORD PTR es:[bx] add ax,si adc dx,0 mov WORD PTR ds:[di],ax mov si,dx dec bp je $L764 ; mov ax,cx mul WORD PTR es:[bx+2] add ax,si adc dx,0 mov WORD PTR ds:[di+2],ax mov si,dx dec bp je $L764 ; mov ax,cx mul WORD PTR es:[bx+4] add ax,si adc dx,0 mov WORD PTR ds:[di+4],ax mov si,dx dec bp je $L764 ; mov ax,cx mul WORD PTR es:[bx+6] add ax,si adc dx,0 mov WORD PTR ds:[di+6],ax mov si,dx dec bp je $L764 ; add bx,8 add di,8 jmp $FC743 nop$L764: mov ax,si pop es pop ds pop di pop si pop bx pop bp ret nop _bn_mul_words ENDP PUBLIC _bn_sqr_words_bn_sqr_words PROC FAR; Line 92 push bp push bx push si push di push ds push es mov bp,sp mov si,WORD PTR [bp+16] mov ds,WORD PTR [bp+18] mov di,WORD PTR [bp+20] mov es,WORD PTR [bp+22] mov bx,WORD PTR [bp+24] mov bp,bx ; save a memory lookup later shr bx,1 ; div count by 4 and do groups of 4 shr bx,1 je $L666$L765: mov ax,WORD PTR es:[di] mul ax mov WORD PTR ds:[si],ax mov WORD PTR ds:[si+2],dx ; mov ax,WORD PTR es:[di+2] mul ax mov WORD PTR ds:[si+4],ax mov WORD PTR ds:[si+6],dx ; mov ax,WORD PTR es:[di+4] mul ax mov WORD PTR ds:[si+8],ax mov WORD PTR ds:[si+10],dx ; mov ax,WORD PTR es:[di+6] mul ax mov WORD PTR ds:[si+12],ax mov WORD PTR ds:[si+14],dx ; add di,8 add si,16 dec bx je $L666 jmp $L765$L666: and bp,3 dec bp ; The copied value of bx (num) js $L645 ; mov ax,WORD PTR es:[di] mul ax mov WORD PTR ds:[si],ax mov WORD PTR ds:[si+2],dx dec bp js $L645 ; mov ax,WORD PTR es:[di+2] mul ax mov WORD PTR ds:[si+4],ax mov WORD PTR ds:[si+6],dx dec bp js $L645 ; mov ax,WORD PTR es:[di+4] mul ax mov WORD PTR ds:[si+8],ax mov WORD PTR ds:[si+10],dx$L645: pop es pop ds pop di pop si pop bx pop bp ret _bn_sqr_words ENDP PUBLIC _bn_div64_bn_div64 PROC FAR push bp mov bp,sp mov dx, WORD PTR [bp+6] mov ax, WORD PTR [bp+8] div WORD PTR [bp+10] pop bp ret _bn_div64 ENDPF_TEXT ENDSEND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -