21,500
社区成员
发帖
与我相关
我的任务
分享Sseg SEGMENT stack
DW 512 DUP(?)
Sseg ENDS
Dseg SEGMENT
SUM DW ?
Dseg ENDS
Cseg SEGMENT 'code'
ASSUME CS:Cseg,DS:Dseg,SS:Sseg
START:
MOV AX,Dseg ;data segment offset to ax
MOV DS,AX ;data segment offset to ds (data segment register);数据段的地址送到ds,数据段寄存器
MOV CX,100 ;loop count to cx,cx初始值为100
XOR AX,AX ; clear ax,ax清零
START1:
ADD AX,CX ;calculate sum as: 100+99+98+...+1,每次ax都加上cx,注意cx会不断地递减
LOOP START1;<==> dec cx and jne to START1,cx减1,如果cx不等于0,就跳转到START1,如果cx减到0了就退出循环,执行下面的MOV SUM,AX;
MOV SUM,AX;
MOV AH,4CH ;根据这里的值不同,下面调用21H的时候,程序退出效果不一样,类似于这里传参数,下面调函数
INT 21H ;调用dos系统中断,退出程序
Cseg ENDS
END START
STACK SEGMENT stack
DW 512 DUP(?)
STACK ENDS
DATA SEGMENT
SUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA ;data segment offset to ax
MOV DS,AX ;data segment offset to ds (data segment register);数据段的地址送到ds,数据段寄存器
MOV CX,100 ;loop count to cx,cx初始值为100
XOR AX,AX ; clear ax,ax清零
START1:
ADD AX,CX ;calculate sum as: 100+99+98+...+1,每次ax都加上cx,注意cx会不断地递减
LOOP START1;<==> dec cx and jne to START1,cx减1,如果cx不等于0,就跳转到START1,如果cx减到0了就退出循环,执行下面的MOV SUM,AX;
MOV SUM,AX;
MOV AH,4CH ;根据这里的值不同,下面调用21H的时候,程序退出效果不一样,类似于这里传参数,下面调函数
INT 21H ;调用dos系统中断,退出程序
CODE ENDS
END START