Se necesita con urgencia programación de ensamblaje: use la estructura DO-While para calcular 1+2*3+3*4+....+N*(N+1), donde N*(N+1) es menor que 200. Utilice la estructura DO-While. Por favor dé una respuesta experta.
"ChenB_2009" en el primer piso entendió mal el significado de la pregunta.
N* (N+1) es menor que 200, lo que significa que el número de N elementos es menor que 200, no que la suma acumulada sea menor que 200.
El siguiente es el programa que compilé:
;?El programa se compiló en el entorno integrado MASMPlus?1.2 y se ejecutó normalmente después de la depuración.
Segmento de código
¿Asumir? CS: código, DS: código
;?---------- ------ ---- -------
;?Función: Mostrar la dirección especificada (Str_Addr)
;?Entrada:
;?Str_Addr = Dirección de cadena (obligatoria en el segmento de datos)
Salida: MACRO?Str_Addr
lea?dx,Str_Addr
mov?ah,9
int?21h
EndM
;?---------- ---------- -------
;?Función: Convertir número binario sin signo: Convierte el número binario sin signo en AX para borrar el código ASCII decimal y enviarlo a la pantalla
; Entrada: AX = número binario ?
;?Salida: ¿Mostrar el número ASCII convertido en la posición actual del cursor?
¿Dec_ASCII?Proc?Near?
¿empujar?dx?
¿empujar?bx?
empujar?di
movbx,10?
leadi,@@Temp_Save[5]?
movbyte?ptr?[di],'$'?
decdi?
cld?
@@Divide:?xordx,dx?
divbx?
ordl,30h?
mov[di],dl?
decdi?
prueba?
push?di?
popdx
movah,9?
int21h
popdi
popbx
popdx? >ret?
@@Temp_Save?db6?dup(?)
Dec_ASCII?EndP
;?---------- - --------- ---------- -------
Prompt_N?db?'N=$'
Prompt_ Sum?db?13,10,'Sum=$'
Presione_Key?db13,10,13,10,'El?completado...Presione?cualquier?tecla?para?salir... $ '?
Inicio:push?cs
pop?ds
push?cs
pop?es
mov?bx,1
mov?cx,bx?;cx=valor acumulado y inicial
@@Repetir:?inc?bl
mov? al,bl
inc?al
mul?bl
cmp?ax,200
jae?$+6
add?cx,ax?;Acumular
jmp?@@repeat
dec?bl?;El número de elementos que cumplen con los requisitos
Salida?Prompt_N
mov?ax,bx
call?Dec_ASCII?; Convierte el número binario sin signo en AX para borrar ASCII decimal y enviarlo a la pantalla
Salida?Prompt_Sum
mov?ax,cx
llamada?Dec_ASCII
;?---------- ---- -- ---- -------
Salir_Pr
oc:?Output?Press_Key?;prompt La operación se completa, presione cualquier tecla para finalizar el programa
mov?