马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
;程序目的是调用dos中断在屏幕上显示:(A)=10011010BDATA SEGMENT ;数据段
A DB 10011010B;以A为标志的代码段偏移地址内容初始化为二进制10011010用十六进制就是 9AH 00H 两个字节
B DB '(A)=;以B为标志的代码段偏移地址内容初始化为字符串'(A)=''为字符串结束标志
C1 DB 'B',0DH,0AH,';以C为标志的代码段偏移地址内容初始化为字符串'B',回车,换行,'为字符串结束标志
DATA ENDS;数据段结束
STACK1 SEGMENT;堆栈段
DB 200 DUP(0);开辟200个双字节存空间
STACK1 ENDS;堆栈段结束
CODE SEGMENT;代码段
ASSUME DS:DATA,SS:STACK1,CS:CODE;把段名为DATA的段声明为数据段,把段名为STACK1的段声明为堆栈段,把段名为CODE的段声明为代码段
;代码段开始
START: MOV AX,DATA;把数据段地址传给AX寄存器
MOV DS,AX;让DS寄存器保存数据段地址
LEA DX,B;把以B为标志的代码段偏移地址传给DX寄存器
MOV AH,09H;09传给AH
INT 21H;调用中断,结合上一句,作用:在屏幕上显示以DX寄存器内容为初始地址的字符串,到'为字符串结束标志
MOV BL,A;把以A为标志的代码段偏移地址内容10011010(二进制)传给BX寄存器的低段
MOV CL,8;初始化CL为8,为了循环8次,因为
NEXT: MOV DL,0;初始化DL
SAL BL,1;把BL算数左移一位,相当于把最高位放入 CF(标志寄存器的进位标志位)
RCL DL,1;把全0的DL寄存器带CF循环左移,相当于把把BL的最高位从CF给DL最低位,同时CF清0
ADD DL,30H;对DL加上30H,相当于把数字转化为ASCII
MOV AH,2;02传给AH
INT 21H;调用中断,结合上一句,作用:在屏幕上显示以DL寄存器内容ASCII的字符
DEC CL;CL值减1
JNE NEXT;CL值不为0转到NEXT标识的语句
LEA DX,C1;把以C为标志的代码段偏移地址传给DX寄存器
MOV AH,09H;09传给AH
INT 21H;调用中断,结合上一句,作用:在屏幕上显示以DX寄存器内容为初始地址的字符串,到'为字符串结束标志
MOV AH,4CH;4CH传给AH
INT 21H;调用中断,结合上一句,作用:返回操作系统
CODE ENDS;代码段结束
END START;程序结束
|