|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
;程序目的是调用dos中断在屏幕上显示:(A)=10011010B
- DATA 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;程序结束
复制代码 |
|