- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《微机原理与接口技术》课程设计
题目一:用16位乘法指令完成32位无符号数乘法
要求:以十六进制格式输入乘数与被乘数,以十六进制格式显示结果,两个数相乘。十六进制输入,十六进制输出。
设计思路:实现2个32位无符号数的相乘,被乘数在DX和AX寄存器中,乘数在CX和BX寄存器中,最后的64位乘积在DX,CX,BX,AX,中。
程序代码如下:
data segment
p1 db Input the first number:$
p2 db 0dh,0ah,Input the second number:$
p3 db 0dh,0ah,The result is:$
p4 db 0dh,0ah,Error!,$
key1 db 11 dup(?)
key2 db 11 dup(?)
x db 4 dup(?)
y db 4 dup(?)
p dw 4 dup(?)
data ends
sstack segment stack stack
db 100h dup(?)
sstack ends
code segment
main proc far
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,offset p1
mov ah,09h
int 21h ; 显示 p1
mov dx,offset x
mov si,dx
mov dx,offset key1
mov bx,dx
mov [bx],byte ptr 9
mov ah,0ah ;输入第一个数
int 21h
mov dx,offset key1
call switch
mov dx,offset p2
mov ah,09h
int 21h ;显示p2
mov dx,offset y
mov si,dx
mov dx,offset key2
mov bx,dx
mov [bx],byte ptr 9
mov ah,0ah ;输入第二个数
int 21h
call switch
mov ah,x+2 ;2个数乘法
mov al,x+3 ;x1
mov bh,y+2
mov bl,y+3 ;y1
mul bx ;x1*y1
mov p+2,dx
mov p,ax
mov ah,x
mov al,x+1 ;x2
mul bx ;x2*y1
add p+2,ax
adc p+4,dx
mov ah,x+2
mov al,x+3 ;x1
mov bh,y
mov bl,y+1 ;y2
mul bx ;x1*y2
add p+2,ax
adc p+4,dx
adc p+6,0
mov ah,x
mov al,x+1 ;x2
mul bx
文档评论(0)