【发布时间】:2014-10-10 17:39:18
【问题描述】:
我的任务是编写一个 MASM x86 汇编程序,该程序通过位移来乘/除两个 16 位数字。到目前为止我所拥有的是:
INCLUDE Irvine32.inc
.data
count BYTE -1
val1 SDWORD ?
val2 SDWORD ?
str1 BYTE "Enter Integer 1 here: ",0 ;
str2 BYTE "Enter Integer 2 here: ",0
str3 BYTE "The product is: ",0
mval WORD ?
mval2 WORD ?
pval WORD ?
.code
call clrscr
main PROC
mov dh,10
mov dl,20
call Gotoxy
mov edx, OFFSET str1
call WriteString
call ReadInt
mov mval,ax
mov dh,12
mov dl,20
call Gotoxy
mov edx, OFFSET str2
call WriteString
call ReadInt
mov mval2,ax
mov dh, 14
mov dl, 20
call Gotoxy
mov edx, OFFSET str3
call WriteString
mov ax,pval
call WriteInt
call crlf
call waitmsg
mov eax,0
mov ax,mval2
mov ecx, 16
L1:
shr bx,1
INC count
JNC DontAdd
push ecx
mov ax,mval
mov cl,count
shl dx,cl
add ax,dx
pop ecx
DontAdd:
LOOP L1
call waitmsg
exit
main ENDP
END main
如何正确实现按位乘法/除法?
【问题讨论】:
-
至少你应该指定你的编程语言。
-
不,它必须是汇编语言,我会告诉你我有什么。
-
汇编语言种类繁多。
-
编程语言是 x86 处理器的汇编语言。
标签: assembly bit-manipulation masm irvine32