汇编程序:1、编程计算S=1+3+5+......+99,并以十六进制形式显示S的值
答案:2 悬赏:0 手机版
解决时间 2021-11-17 20:29
- 提问者网友:捧腹剧
- 2021-11-17 17:14
汇编程序:1、编程计算S=1+3+5+......+99,并以十六进制形式显示S的值
最佳答案
- 五星知识达人网友:廢物販賣機
- 2021-11-17 18:03
;1+3+....+99=(1+99)*50/2=9C4
CODE SEGMENT
ASSUME CS:CODE
START: MOV CX,99
MOV AX,0
LOP: ADD AX,CX
SUB CX,2
JNS LOP
MOV BX,AX
CALL DISPLAY
MOV AH,4CH
INT 21H
;入口参数:BX
;功能:显示字数据
DISPLAY PROC
PUSH CX
MOV CH,4
MOV CL,4
LOP1: ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,3AH
JB NEXT
ADD DL,7
NEXT: MOV AH,2
INT 21H
DEC CH
CMP CH,0
JNZ LOP1
POP CX
RET
DISPLAY ENDP
CODE ENDS
END START
CODE SEGMENT
ASSUME CS:CODE
START: MOV CX,99
MOV AX,0
LOP: ADD AX,CX
SUB CX,2
JNS LOP
MOV BX,AX
CALL DISPLAY
MOV AH,4CH
INT 21H
;入口参数:BX
;功能:显示字数据
DISPLAY PROC
PUSH CX
MOV CH,4
MOV CL,4
LOP1: ROL BX,CL
MOV DL,BL
AND DL,0FH
ADD DL,30H
CMP DL,3AH
JB NEXT
ADD DL,7
NEXT: MOV AH,2
INT 21H
DEC CH
CMP CH,0
JNZ LOP1
POP CX
RET
DISPLAY ENDP
CODE ENDS
END START
全部回答
- 1楼网友:duile
- 2021-11-17 19:11
.386
STACK SEGMENT USE16 STACK
DB 2000 DUP(0)
STACK ENDS
DATA SEGMENT USE16
NUM DD 99
OUTPUT DB 0DH,0AH,'SUM 0F 1 .. 8000 IS : '
RESULT DB 16 DUP (' '),'$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX, DATA
MOV DS, AX
MOV EBX, NUM
PUSH EBX
CALL SUM_P ;计算1....8000的和 结果在EAX中
CALL F2T10 ; (EAX) 转化为十进制可显示字符放到 result 缓冲区中
LEA DX, OUTPUT
MOV AH, 9
INT 21H
EXIT: MOV AH,4CH
INT 21H
SUM_P PROC
MOV BP,SP
MOV EBX, [BP+2]
MOV EAX,0
LP: ADD EAX,EBX
DEC EBX
cmp EbX, 0
JNZ LP
RET 4
SUM_P ENDP
; 将 (EAX) 中的内容,转换成 十进制数串
F2T10 PROC
MOV EBX, 10
LEA SI, RESULT+15
L1: MOV EDX, 0
DIV EBX
ADD DL,30H
MOV [SI],DL
DEC SI
CMP EAX, 0
JZ F_EXIT
JMP L1
F_EXIT:
RET
F2T10 ENDP
CODE ENDS
END START
STACK SEGMENT USE16 STACK
DB 2000 DUP(0)
STACK ENDS
DATA SEGMENT USE16
NUM DD 99
OUTPUT DB 0DH,0AH,'SUM 0F 1 .. 8000 IS : '
RESULT DB 16 DUP (' '),'$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX, DATA
MOV DS, AX
MOV EBX, NUM
PUSH EBX
CALL SUM_P ;计算1....8000的和 结果在EAX中
CALL F2T10 ; (EAX) 转化为十进制可显示字符放到 result 缓冲区中
LEA DX, OUTPUT
MOV AH, 9
INT 21H
EXIT: MOV AH,4CH
INT 21H
SUM_P PROC
MOV BP,SP
MOV EBX, [BP+2]
MOV EAX,0
LP: ADD EAX,EBX
DEC EBX
cmp EbX, 0
JNZ LP
RET 4
SUM_P ENDP
; 将 (EAX) 中的内容,转换成 十进制数串
F2T10 PROC
MOV EBX, 10
LEA SI, RESULT+15
L1: MOV EDX, 0
DIV EBX
ADD DL,30H
MOV [SI],DL
DEC SI
CMP EAX, 0
JZ F_EXIT
JMP L1
F_EXIT:
RET
F2T10 ENDP
CODE ENDS
END START
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯