【新手求助】输入两个非符号数(<65535),计算其结果的不同形式

weixin_36737598 2016-12-04 10:19:17
汇编题。键盘输入两个十进制非符号数(≤65535),计算两数之乘积, 分别以十进制、十六进制二进制输出结果
输入:
12345
65535
输出:
12345*65535=
809029575
3038CFC7h
0011 0000 0011 1000 1100 1111 1100 0111B
其中输入一行字符串通过调用int 21h的0Ah子功能实现。
程序中允许使用32位寄存器。

这个是题目,感觉主要是自己不太会如何实现字符串输入和乘法实现这块,进制转换倒是没有问题~初学汇编很多地方还没太懂,还请前辈们耐心指教啊
...全文
1959 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ptrtoptr 2018-06-24
  • 打赏
  • 举报
回复
DATAS SEGMENT
Msg DB 'Input a number:','$'
B DB 10,?,10 dup('$')
Err DB 'input error $';
flag dw 0
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov cx ,2
two:
push cx
MOV DX,offset Msg
MOV AH,09H
INT 21H ;
MOV DX,offset B
MOV AH,0aH
INT 21H;
MOV AH,02H
MOV DL,0dH
INT 21H
MOV AH,02H
MOV DL,0aH
INT 21H;
LEA SI,B+1
xor cx, cx
xor ax,ax
MOV cl,[SI]
MOV BX,00H
LEA SI,B+2
S1:
MOV DX,0aH
MUL DX
XOR BX, BX
MOV BL,[SI]
SUB BL,30H
ADD AX,BX
ADD SI,01H
LOOP S1 ;
MOV CX,00h
MOV CX,AX
CMP AX,65535 ;
Ja Error
pop cx
PUSH AX ; save
loop two
pop ax
pop dx
MUL DX
jmp fin
Error:
MOV DX,offset Err
MOV AH,09H
INT 21H
fin:
MOV AH,4CH
INT 21H
CODES ENDS
END START
Abyeol 2018-05-26
  • 打赏
  • 举报
回复
引用 1 楼 baidu_23107797 的回复:
输入用0Ah,二数相乘(16位x16位)结果就放在dx:ax 楼主要俺们完整给你一套代码? 其实这都不难,都是几分钟的事,但这是授人以鱼了。 不如楼主自己先写一个,出错了再拿来大家参详吧。
问一下题目里面允许使用32位寄存器的话应该怎么做呢
weixin_36737598 2016-12-05
  • 打赏
  • 举报
回复
还是写不来。。哭。。。好像很多基本的概念不是很能理解,还求前辈能详细地注解下。。刚开始搞汇编真是心好累呀。。
baidu_23107797 2016-12-04
  • 打赏
  • 举报
回复
输入用0Ah,二数相乘(16位x16位)结果就放在dx:ax 楼主要俺们完整给你一套代码? 其实这都不难,都是几分钟的事,但这是授人以鱼了。 不如楼主自己先写一个,出错了再拿来大家参详吧。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧