VC6汇编第二次上机实验

实验目标

  • A、编写多个整数求和的程序:
    对用户输入的多个整数进行求和,并输出结果。
    阅读然后修改附录A中的求和程序(该程序实现了3个整个求和的功能),使用一个常量决定数组的大小(即程序最大可以求和的整数个数):
    ARRAY_SIZE = 20
    Array DWORD ARRAY_SIZE DUP(?)
    写一个过程提示用户输入需要求和的整数的个数,向promptForIntegers过程传递用户输入的数值。如果用户的输入值大于ARRAY_SIZE(判断的示例代码参见附录B),那么显示一条错误信息并退出程序。提示和错误信息可以如下例所示:
How many integers will be added? 21
The array cannot be larger than 20

精心设计程序,使得在修改了ARRAY_SIZE后,错误提示信息中的ARRAY_SIZE数目值(在上例中是20)也应自动修改。
提示:
a). 编程能力一般的同学可以分两步:①弄懂附录A的程序。该程序实现了3个整个求和的功能。 ②找到附录A的程序需要修改的地方,以实现多个整数求和。
b). 编程能力较强的同学建议直接编写程序实现。


  • B、对上述程序添加功能:除显示多个整数的和外,还分别显示这些整数中正整数的和负整数的和。(区分正数与负数的示例代码参见附录B)

实验附录

  • 附录A
    程序功能:由用户输入3个整个数,然后对这3个整数进行求和,并输出结果。
    这里写图片描述

这里写图片描述

  • 附录B

1.比较无符号数是否超过20的示例代码:

cmp  var_A, 20           ; var_A可以为内存操作数,也可以为寄存器
ja    too_big_error
;  处理小于等于20的代码
;  …
;  注意:顺序执行时会执行下面处理错误情况的代码,可以使用jmp指令绕开
  too_big_error:
    ;  处理大于20的错误情况的代码

2.判断有符号数是正数还是负数的示例代码:

cmp   var_A, 0            ; var_A可以为内存操作数,也可以为寄存器
jge    positive_and_0
;  处理负数的代码
;  …
;  注意:顺序执行时会执行下面处理正数和0的代码,可以使用jmp指令绕开
  positive_and_0:
    ;  处理正数和0的代码

程序源代码

TITLE Integer Summation Program  (Sum2.asm)

INCLUDE Irvine32.inc
INTEGER_COUNT = 3

.data
str1 BYTE "Enter a signed integer: ",0
str2 BYTE "The sum of the integers is ",0
array DWORD INTEGER_COUNT DUP(?)

.code 
main PROC
	call Clrscr
	mov esi,OFFSET array
	mov ecx,INTEGER_COUNT
	;call DumpRegs		; display registers
	call PromptForIntegers
	call ArraySum
	Call DisplaySum
	exit
main ENDP


PromptForIntegers PROC USES ecx edx esi
	mov edx
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值