Red de conocimiento informático - Conocimiento del nombre de dominio - 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.

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?