1. 编程题: 设在数据段中定义有三个变量X,Y,Z,其中X的值为8,Y的值为9,请利用算术移位指令编写程序,计算出下式的值(假设乘积的结果只有低16位有效)。
具体程序为:
DATA SEGMENT
X DW 8
Y DW 9
Z DW ?
DATA ENDS
ASSUME CS:CODE,DS:DATA
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,X
MOV BX,Y
ADD AX,BX ;X+Y
SHL AX,1 ;(X+Y)*2 在
MOV BX,AX
MOV CL,2
SHL AX,CL
ADC AX,BX
MOV Z,AX
CODE ENDS
END START
2. 编程题:编程实现: S=1+2+3+……+100 ,要求计算后的结果存放在变量S里
具体程序为:
DATA SEGMENT
S DW (?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,100
MOV AX,0H
MOV BX,1H
LOOP1:
ADD AX,BX
INC BX
LOOP LOOP1
MOV S,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
3. 编程题:已知有两个双字长度的数DATA1和DATA2,要求用8086汇编语言编程实现两数相加,并将结果存放在result中,采用高地址优先存储结果(如1234H,5678H表示56781234H)。程序的数据段部分已给出,要求补充完整程序,实现上述要求的功能。
(3)具体程序设计
DATA SEGMENT
DATA1 DW 5311H,8A13H ;表示数据8A135311H
DATA2 DW 4783H,9526H ;表示数据95264783H
RESULT DW 2 DUP(?) ; 存放多字节加法的结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,DATA1
MOV DX,DATA1+2
ADD AX,DATA2 ;低字部分相加
ADC DX,DATA2+2 ;高字部分带进位相加
MOV RESULT,AX ;存放低字部分相加结果
MOV RESULT+2,DX ;存放高字部分相加结果
CODE ENDS
END START