将完整程序放在代码段C_SEG 中,编写程序把数据段D_SEG中的AGUEND和附加段E_SEG中的ADDEND相加,并把结果存放在D_SEG中的SUM中。其中AUGEND,ADDEND,SUM均为dw类型,AUGEND赋值为9251,ADDEND赋值为-5962。
时间: 2024-02-03 11:12:45 浏览: 73
```assembly
assume cs:code, ds:data
data segment
AUGEND dw 9251
ADDEND dw -5962
SUM dw ?
data ends
code segment
start:
mov ax, data
mov ds, ax
mov ax, AUGEND
add ax, ADDEND
mov SUM, ax
mov ah, 4ch
int 21h
code ends
end start
```
解释:
- `assume cs:code, ds:data`:指定代码段和数据段。
- `data segment`:定义数据段。
- `AUGEND dw 9251`:定义一个名为AUGEND的变量,类型为dw(双字,即16位),赋值为9251。
- `ADDEND dw -5962`:定义一个名为ADDEND的变量,类型为dw,赋值为-5962。
- `SUM dw ?`:定义一个名为SUM的变量,类型为dw,但不赋初值,待会儿会把计算结果存放在这里。
- `data ends`:结束数据段的定义。
- `code segment`:定义代码段。
- `start:`:标记程序入口。
- `mov ax, data`:把数据段的地址(在代码段中)移动到ax寄存器。
- `mov ds, ax`:把ax寄存器中的地址赋给ds寄存器,使得ds寄存器指向数据段。
- `mov ax, AUGEND`:把AUGEND的值移动到ax寄存器。
- `add ax, ADDEND`:把ADDEND的值加到ax寄存器中。
- `mov SUM, ax`:把ax寄存器中的计算结果存放到SUM变量中。
- `mov ah, 4ch`:把4ch(表示程序正常退出)移动到ah寄存器。
- `int 21h`:调用21h号中断,程序结束。
- `code ends`:结束代码段的定义。
- `end start`:标记程序结束。