⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 49_dwordmul.asm

📁 汇编语言 参考书 包含作业与答案 从入门到精通 通俗易懂
💻 ASM
字号:
;----------------------------------------------------------------
;        ╭══════┤    32060624___王克	         ├═════╮
;        ║          						     ║
;        ║             					     ║
;       ║              ★ 汇编语言 第二次作业 ★                   ║
;       ║      |---------------------------------------------|     ║
;       ║ 							     ║
;        ║        ;双字相乘(32位)    X3  =  X1  *  X2           ║ 
;        ║                                                          ║
;        ║                               2004.10.30                 ║
;        ║                                                          ║
;        ╰ ════════════════════════════╯
;━┅━┅━┅━┅━┅━┅━┅━┅━━┅━┅━┅━┅━┅━┅━┅━━┅━┅━━┅━
.model small
.stack 100h
.DATA
	X1	Dword	0ffffffffH
	X2	Dword	0ffffffffH
	X3	WORD	4 DUP(0),'$'        ;X1 * X2 = 0ffff fffe 0000 0001h
.code
.startup
;-------------------------------------------------
MAIN	PROC    FAR
	MOV	AX,@DATA
	MOV	DS,AX

	CALL	DMUL		;双字乘法
	CALL 	DISPLAY16	;以16进制输出

.exit
MAIN	ENDP	
;------------------;双字乘法-------------------------
DMUL	PROC	NEAR
					;两低字相乘
	mov	bx,word ptr x1
	mov	ax,word ptr x2
	mul 	bx
	mov	X3,ax
	mov	X3+2,dx

	mov	ax,word ptr x2+2	;低字乘*高字
	mul 	bx
	add 	X3+2,ax
	adc	X3+4,dx
	adc	X3+6,0			;加进位

	mov	bx,word ptr x1+2	;高字乘*低字
	mov	ax,word ptr x2
	mul 	bx
	add 	X3+2,ax
	adc	X3+4,dx
	adc	X3+6,0			;加进位
					
	mov	ax,word ptr x2+2	;两高位相乘
	mul 	bx
	add	X3+4,ax
	adc	X3+6,dx

	RET
DMUL ENDP
;------------------;以16进制输出-----------------------
DISPLAY16	PROC	NEAR
	MOV	CX,4		;外层计数器,4个字
	LEA	SI,X3+6
NEXTWORD:
	PUSH	CX		;保存计数器值
	MOV     BX,[SI]
        MOV     CX,4
;;;;;;;;;;;;;;;;;;;        
CONVERT:
	PUSH    CX		;保存内层计数器	
        MOV     CL,4	
        ROL     BX,CL
        MOV     AL,BL
        AND     AL,0FH
        or      AL,30H		;转化为ASCII码
        CMP     AL,39H
        JBE     DISP
        ADD     AL,'A'-'9'-1	;大于9则用ABCDEF表示
DISP:
	MOV     DL,AL
        MOV     AH,2
        INT     21H		;显示一个字符
        
        POP     CX
        LOOP    CONVERT
;;;;;;;;;;;;;;;;;;;;
	DEC	SI
	DEC	SI
	POP	CX
	LOOP	NEXTWORD	;开始第二个字的显示
	
        RET        
DISPLAY16 ENDP
;----------------------------------------------------
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -