當前位置:編程學習大全網 - 源碼下載 - 急,匯編程序設計:計算1+2*3+3*4+....+N*(N+1),其中,N*(N+1)小於200.采用DO-While結構。請高人解答。

急,匯編程序設計:計算1+2*3+3*4+....+N*(N+1),其中,N*(N+1)小於200.采用DO-While結構。請高人解答。

1樓的?ChenB_2009?把題意理解錯了。

N*(N+1)小於200,指第N項數小於200,而不是累加和小於200。

下面是我編制的程序:

;?本程序在MASMPlus?1.2集成環境下通過編譯,經過調試,運行正確。

CodeSegment

Assume?CS:Code,DS:Code

;?-------------------------------------

;?功能:顯示指定地址(Str_Addr)的字符串

;?入口:

;?Str_Addr=字符串地址(要求在數據段)

Output?MACRO?Str_Addr

lea?dx,Str_Addr

mov?ah,9

int?21h

EndM

;?-------------------------------------

;?功能:把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示

;?入口:AX=二進制數?

;?出口:在當前光標位置顯示轉換後的ASCII碼數字?

Dec_ASCII?Proc?Near?

push?dx?

push?bx?

push?di

movbx,10?

leadi,@@Temp_Save[5]?

movbyte?ptr?[di],'$'?

decdi?

cld?

@@Divide:?xordx,dx?

divbx?

ordl,30h?

mov[di],dl?

decdi?

test?ax,0ffffh?

jnz@@Divide?

incdi?

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=$'

Press_Key?db13,10,13,10,'The?complated.?Press?any?key?to?exit...$'?

Start:push?cs

pop?ds

push?cs

pop?es

mov?bx,1

mov?cx,bx?;cx=累加和初值

@@Repeat:?inc?bl

mov?al,bl

inc?al

mul?bl

cmp?ax,200

jae?$+6

add?cx,ax?;累加

jmp?@@Repeat

dec?bl?;滿足要求的項數

Output?Prompt_N

mov?ax,bx

call?Dec_ASCII?;把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示

Output?Prompt_Sum

mov?ax,cx

call?Dec_ASCII

;?-------------------------------------

Exit_Proc:?Output?Press_Key?;提示操作完成,按任意鍵結束程序

mov?ah,1

int?21h

mov?ah,4ch?;結束程序

int?21h

CodeENDS

ENDStart?;編譯到此結束

  • 上一篇:延慶源代碼開發
  • 下一篇:遊戲直播怎麽播才能做起來
  • copyright 2024編程學習大全網