題目為: 計算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
uj5u.com熱心網友回復:
在線蹲回復呀uj5u.com熱心網友回復:
輸出十六進制結果的話,直接查表就可以了HexChars db '0123456789ABCDEF'
然后用計算結果的低4位查表得的到最低位字符,然后把計算結果右移4位繼續查,依此類推
uj5u.com熱心網友回復:
能給個代碼嗎?uj5u.com熱心網友回復:
.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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/33177.html
標籤:匯編語言
