汇编中将运算结果十六进制数转换为ascii码显示输出,我的为啥不正确,求大佬看看

qw1e2x3g4 2020-06-20 11:10:03
题目为: 计算S=1+2×3+3×4+4×5+……+N×(N+1)之和 ,直到N×(N+1)>200为止
结果为 038DH, 但是我转换ascii码后输出的不是这个结果,
代码如下:

STACKS SEGMENT PARA STACK 'STACK'
STA DW 64 DUP(0)
TOP EQU $
STACKS ENDS

DATA SEGMENT
RESULT DW 0H
MEM DB 4 DUP(?)
DATA ENDS

CODES SEGMENT
ASSUME CS:CODES,SS:STACKS,DS:DATA
START:
MAIN PROC FAR

MOV AX,STACKS
MOV SS,AX
MOV AX,DATA
MOV DS,AX
LEA SP,TOP
XOR AX,AX
MOV DX,01H
MOV BL,02H
A1: MOV AL,BL
INC BL
MUL BL
CMP AX,00C8H
JA A2
ADD DX,AX
JMP A1
A2: MOV RESULT,DX
MOV AX,RESULT
MOV CX,4
MOV DI,3
L1: PUSH CX
MOV CL,4
ROL AX,CL
MOV BX,AX
AND BX,0FH
ADD BX,30H
JB L2
ADD BX,7
L2: MOV MEM[DI],BL
INC DI
POP CX
LOOP L1
LEA DX,MEM
MOV AH,09H
INT 21H
;MOV AH,8
;INT 21H
;PUSH DX
MOV AH,4CH
INT 21H
RET
MAIN ENDP
CODES ENDS
END START






...全文
614 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
.model small

.data
HexChars db '0123456789ABCDEF'
buf db 4 dup (0), 'h$'

.code
start:
mov ax, @data
mov ds, ax
mov dx, 038dh
mov cx, 4
lea bx, HexChars
lea si, buf + 4
i2h: mov ax, dx
and ax, 15
dec si
xlat
mov [si], al
shr dx, 1
shr dx, 1
shr dx, 1
shr dx, 1
loop i2h
mov ah, 9
mov dx, si
int 21h
mov ah, 4ch
int 21h

end start
qw1e2x3g4 2020-06-20
  • 打赏
  • 举报
回复
能给个代码吗?
  • 打赏
  • 举报
回复
输出十六进制结果的话,直接查表就可以了

HexChars db '0123456789ABCDEF'
然后用计算结果的低4位查表得的到最低位字符,然后把计算结果右移4位继续查,依此类推
qw1e2x3g4 2020-06-20
  • 打赏
  • 举报
回复
在线蹲回复呀

21,497

社区成员

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

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