汇编语言随笔(12)-端口读写、shl和shr指令、检测点14和实验14

端口读写

      在pc系统中,CPU可定位的端口数量为64k个,地址范围为0~65535。对端口的读写只能采用 in 和 out ,分别表示从端口读取数据和往端口写入数据。
      在 in 和 out 指令中,只能采用 al 和 ax 来存放从端口中读到的数据或发送到端口中的数据。在0~255以内的端口进行读写时,端口号直接给出;在256-65535以内的端口,端口号放在 dx 中。
      例:

		in al,60h		从端口60h中读入一个字节
		out 60h,al		往端口60h中写入一个字节

		mov dx,3fdh		用dx中的值表示端口号
		in al,dx		从端口3fdh中读入一个字节
		out dx,al		往端口3fdh中写入一个字节

检测点14.1

      (1)读取CMOS RAM中2号单元的内容

		mov al,2
		out 70h,al		将2输入到CMOS的地址端口中,表示接下来在2号单元中读写数据
		in al,71h		从CMOS数据端口的2号单元中读取数据内容

      (2)向CMOS RAM的2号单元中写入0

		mov al,2
		out 70h,al
		mov al,0
		out 71h,al

      71h 端口用来读写数据;70h端口用来存放要访问的单元地址。

shl和shr指令

      shl 和 shr 指令是逻辑移位指令,它们的功能是:
      (1)将一个寄存器或内存单元中的数据向左/右移位
      (2)将最后移除的一位写入CF中
      (3)最低/高位补0
      如:mov al,01001000b      shl al,1 执行后的结果为(al)=10010000b,CF=0;
             mov al,01001000b      shr al,1 执行后的结果为(al)=00100100b,CF=0;
      如果移动位数大于1,必须将移动位数放在cl中。
      如:mov al,01110001b      mov cl,3      shl al,cl 执行后的结果为:(al)=10001000b,CF=1。

检测点14.2

      编程:用加法和移位指令计算(ax)=(ax)*10。【(ax)*10=(ax)*2+(ax)*8】
      注意:左移一位相当于乘二,右移一位相当于除二。

		body:shl ax,1
			  mov bx,ax
			  shl ax,1
			  shl ax,1
			  add ax,bx
	 bodyend: nop

实验14

      编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。

		assume cs:code
			data segment
				db '00/00/00 00:00:00'	保存输出格式(共17个字节)
			 	db 9,8,7,4,2,0			CMOS中的对应内存地址
			data ends
			code segment
				mov ax,data
				mov ds,ax
				
				mov cx,6
			 	mov bx,17	保存标号d的偏移地址到bx中
			    mov si,0			
			 s: mov al,[bx]
				out 70h,al
				in al,71h			得到对应内存地址处的内容

				mov dl,al
				push cx
				mov cl,4
				shr dl,cl			dl中存储高位BCD码
				pop cx
				add dl,30h			由BCD码转换为ASC码形式(+30h)
				and al,00001111b	al中存储低位BCD码
				add al,30h
				mov [si],dl
				mov [si+1],al
				add si,3
				inc bx
				loop s
				mov si,0
							得到ds:si为源地址
							
				mov ax,0b800h	
				mov es,ax
				mov di,160*12+(40-17)*2 设置es:di为目的地址用来显示字符串
				cld
				mov cx,17				17为需要传送的字节数
				rep movsb

				mov ax,4c00h
				int 21h
			code ends
			end start

おすすめ

転載: blog.csdn.net/Little_ant_/article/details/108522324
おすすめ