汇编语言的几个整数相加的代码?

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:39:02
data segment
data0 db 10h,20h,30h,40h
data1 db ?
data ends
code segment
assume cs:code,ds:data
begin:mov ax,data
mov ds,ax
add al,data0
add al,data0+1
add al,data0+2
add al,data0+3
mov bl,4
idiv bl
mov data1,al
mov ah,4ch
int 21h
code ends
end begin

本人刚学汇编,希望各位朋友帮我解答一下,在此感谢

这个问题已近在令一个问题中处理了吧。

这一段指令代码是求以data0为首地址的4个字节数的平均值,结果存于data1。但这个程序段有疏漏之处,就是求和之前,应把累加器清零。

data segment ;数据段说明
data0 db 10h,20h,30h,40h ;定义变量及数据
data1 db ? ;平均值存于这里
data ends
code segment ;代码段说明
assume cs:code,ds:data ;段寄存器说明
begin:mov ax,data ;取数据段地址
mov ds,ax ;赋给数据段寄存器
mov al,data0 ;原程序此处为add al,data0,这样就把数据段地址的低字节作为累加器的初值,肯定不会得到正确的结果。改成mov al,data0就对了。
add al,data0+1
add al,data0+2
add al,data0+3 ;累加这4个数,求和
mov bl,4 ;除数
idiv bl ;除以4,求平均值
mov data1,al ;存储平均值
mov ah,4ch dos功能调用4ch号功能,结束程序,返回操作系统
int 21h ;dos功能调用
code ends ;代码段结束说明
end begin ;程序结束说明