DATA SEGMENT定义数据段
ADR DB 10,-31,-45,67,80,46,0,-31,0,77
NUM EQU $-ADRNUM是数据个数
DA1 DB 0DA1用来存放正数的个数,初值为0
DA2 DB 0DA2用来存放负数的个数,初值为0
DA3 DB 0DA3用来存放0的个数,初值为0
DATA ENDS
CODE SEGMENT定义代码段
ASSUME DS:DATA,CS:CODE
START: MOV AX,DATA数据段地址装入
MOV DS,AX
LEA SI,ADR
MOV CX,NUM
MOV AL,0AL清零
DON1:MOV AL,[SI]
CMP AL,0
JGE DON2
INC DA2
JMP END0
DON2:CMP AL,0
JZ DON3
INC DA1
JMP END0
DON3:INC DA3
END0:INC SI
DEC CX
JNZ DON1
MOV AH,4CH
INT 21H
CODE ENDS
END START
1.DA1 DW ‘AB’,‘CD’,‘EF’,‘GH’﹕
MOV AX, DA1+3 //将DA1+3与DA1+4相邻的两个字节分别送给AL与AH
LEA BX, DA1//将DA1的偏移地址送BX
INC BX //BX +1 -->Bx
MOV CX, [BX]//将以BX为有效地址的两个相邻字节单元送寄存器CX
程序段执行后,AX='FC' , BX= offset DA1, CX='DA'
数据存储结构如下:
DA1--> ‘B’
‘A’
‘D’
‘C’
‘F’
‘E’
‘H’
‘G’
2. MOV AX, 1199H
XCHG AH, AL //AL=11H
MOV WVAR, 5566H//(WVAR+1)=55H
XCHG AL, BYTE PRT WVAR+1 //AL=55H,(WVAR+1)=11HH
当程序段运行后,AX= 9955H , WVAR=1166H
3.DA1 DB ‘123456789’
DA2 DB9 DUP(0)
∶
∶
LEA SI , DA1//置源偏4移地址
LEA DI , DA2 //置目的偏4移地址
MOV CX, 9 //设计循环初值
CLD //将DF标志位置0
LOP: LODSB //取第一个字符‘1’,其ASCII码为31H
ADD AL , 10H //ASCII码加10H ,则为41H,对应为字母'A'
STOSB //存入DA2字符串
LOOP LOP //依次循环进行转换
程序段执行后,DA2各字节中的数据;'ABCDEFGHI'
1.编制一段程序求出下列公式中Z的值并放在RESULT单元,注X,Y,RESULT分别定义成字类型变量Z=((X+Y)*4-Y)/2
答:
MOV
AX,X
ADD
AX,Y
SHL
AX,1
SHL
AX,1
SUB
AX,Y
SHR
AX,1
MOV
RESULT,AX
2.试编写一小侧面硬指令序列,在屏幕上显示出"Hello
everybody!"字符串,该字符串已在数据段定义好为变量string
答:
LEA
DX,string
MOV
AH,9
INT
21H
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)