當前位置:編程學習大全網 - 編程軟體 - 匯編中,不使用乘法指令,只用加法指令,以及AL BL 標誌寄存器實現兩個八位二進制正整數的乘法功能

匯編中,不使用乘法指令,只用加法指令,以及AL BL 標誌寄存器實現兩個八位二進制正整數的乘法功能

CODE?SEGMENT

ASSUMECS:CODE

ORG100H

START:?PUSH?CS

POPDS

PUSH?CS

POPES

MOVAL,255

MOVBL,255

CALL?MULT

CALL?DISPAX

MOVAH,4CH

INT21H

;====================================================

;?被乘數放置於al?中,?乘數放置於?bl中,?結果放置於ax中

MULT?PROC?NEAR

PUSH?DX

PUSHF

MOVAH,0

MOVDX,0

CMPBL,0

JE@MULTEXIT

@MULT1:?SHRBL,1

JNC@MULT2

ADDDL,AL

ADCDH,AH

@MULT2:?SHLAL,1

RCLAH,1

CMPBL,0

JNE@MULT1

MOVAH,DH

MOVAL,DL

POPF

POPDX

RET

@MULTEXIT:

MOVAX,0

POPF

POPDX

RET

MULT?ENDP

;==================================

;?將要顯示的無符號數置於?ax?中?

DISPAX?PROC?NEAR

PUSH?AX

PUSH?BX

PUSH?CX

PUSH?DX

PUSH?SI

PUSH?DI

PUSH?BP

PUSHF

PUSH?DS

PUSH?CS

POPDS

MOVBYTE?PTR?NZ,0

PUSH?AX

LEASI,DIVARR

MOVCX,5

@1:

POPAX

MOVDX,0

MOVBX,[SI]

DIVBX

PUSH?DX

CMPAL,0

JNE@2

CMPBYTE?PTR?NZ,1

JE@2

CMPCX,1

JE@2

MOVDL,20H

JMP@3

@2:

ADDAL,30H

MOVDL,AL

MOVBYTE?PTR?NZ,1

@3:

MOVAH,2

INT21H

INCSI

INCSI

LOOP?@1

POPDX

POPDS

POPF

POPBP

POPDI

POPSI

POPDX

POPCX

POPBX

POPAX

RET

DIVARR?DW10000,1000,100,10,1

NZ?DB0

DISPAX?ENDP

;==============================================

CODE?ENDS

ENDSTART

  • 上一篇:電動液壓車數字怎麽調
  • 下一篇:c語言中strlen()怎麽用
  • copyright 2024編程學習大全網