1. WORD类型变量x1中有自定义的5个数据。要求编写程序实现将这5个数求和,把结果存放到WORD类型变量S中
;5个数求和
DATA SEGMENT
X1 DW 1H,2H,3H,1H,1H
S DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,5
XOR AX,AX
LEA BX,X1
AA: ADD AX,[BX]
INC BX
INC BX
LOOP AA
MOV S,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
- 使用jnz指令(cx的值减1,如果不为零则继续执行aa语句段)
;5个数求和
DATA SEGMENT
X1 DW 1H,2H,3H,1H,1H
S DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,5
XOR AX,AX
LEA BX,X1
AA: ADD AX,[BX]
INC BX
INC BX
DEC CX
JNZ AA
MOV S,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
2.?编写计算1+2+3+…+99+100的程序,要求把结果存放于WORD类型变量X中 。
注意:利用loop循环指令中cx自减的特性,从100开始加和,加到cx减少到0为止?
DATA SEGMENT
X DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DX,AX
XOR AX,AX
MOV CX,100
AA: ADD AX,CX
LOOP AA
MOV X,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
3. 有三个字节类型的变量D1、D2和D3,比较大小,把最小的数放在D4变量中
?注意:因为变量都是两字节8位,所以不能使用AX,而要使用AL,因为AL是8位,需要注意类型匹配问题
DATA SEGMENT
D1 DB 12H
D2 DB 24H
D3 DB 5H
D4 DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,D1
CMP AL,D2
JC AA
MOV AL,D2
AA: CMP AL,D3
JC BB
MOV AL,D3
BB: MOV D4,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
?
4. 实验
编写完整的汇编语言程序,实现如下功能:
1.在数据段定义word型变量sum,byte型变量flag。
2.计算2+4+6+...+98+100的和,将结果存放在变量sum中。
3.若sum的值大于2500,则令flag的值为1;否则,令flag的值为0。
|