当前位置: 首页 > news >正文

《汇编语言》第3版 (王爽) 第14章

第14章 端口


检测点14.1
(1).编程,读取CMOS RAM的2号单元的内容。

mov al,2 ;向al写入2
out 70,al ;2送入端口70h
in al,71  ;从端口71h读取2号单元的内容

在CMOS RAM中用6个字节存放当前时间(以BCD码形式存放),地址02中存放的是分。
即从2号单元中读到的内容是当前时间的分钟。如下图所示:
当前分钟为59分
在这里插入图片描述

程序运行后al中内容如下:
在这里插入图片描述
(2).编程,向CMOS RAM的2号单元写入0。

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

检测点14.2
编程,用加法和移位指令计算(ax)=(ax)*10
提示,(ax ×10)=(ax)×2+(ax)×8。
如:计算2 ×10 = 20

mov bx,2  ;2放入bx中
mov cl,3  ;3放入cl中(移位位数)
shl bx,cl ;将bx中的内容左移3位
mov ax,bx ;将移位后的数据暂存到ax中
mov bx,2  ;2放入bx
shl bx,1  ;左移1位
add ax,bx ;加到ax中

在这里插入图片描述
实验14 访问CMOS RAM
编程,以“年/月/日 时:分:秒"的格式,显示当前的日期、时间。
注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元中写入内容,否则将引起一些系统错误。

assume cs:codedata segmentdb 9,8,7,4,2,0db '// ::'
data endscode segment
start:mov ax,data mov ds,ax ;ds指向数据段(CMOS RAM时间单元地址)mov ax,0b800h mov es,ax ;es指向显存空间mov di,0  ;使用di访问时间单元地址mov si,0  ;使用si访问显存空间mov cx,6 ;循环6次s:push cx ;cx入栈mov al,ds:[di] ;将时间单元地址送入alout 70h,al ;将时间单元地址送入70h端口in al,71h  ;71h端口读取时间数据送入almov ah,al ;al送入ahmov cl,4  ;4送入cl(移位位数)shr ah,cl ;ah左移4位(分离10位)and al,00001111b ;分离个位add ah,30h ;十位转换成ASCIIadd al,30h ;个位转换成ASCIImov byte ptr es:[160*12+40*2+si],ah ;十位写入显存空间mov byte ptr es:[160*12+40*2+si+2],al ;个位写入显存空间mov al,ds:[di+6] ;取出间隔字符放入almov byte ptr es:[160*12+40*2+si+4],al ;间隔字符写入显存空间inc di  ;di+1指向下一个字符add si,6 ;si+6指向下一个显存空间pop cx ;cx出栈loop s ;重新循环mov ax,4c00hint 21hcode ends
end start

将上面程序在DOS中运行后效果如下:
在这里插入图片描述

http://www.lryc.cn/news/317523.html

相关文章:

  • Axure原型设计项目效果 全国职业院校技能大赛物联网应用开发赛项项目原型设计题目
  • 力扣串题:字符串中的第一个唯一字母
  • 【五、接口自动化测试】GET/POST 请求区别
  • HDOJ 2036
  • 2.案例、鼠标时间类型、事件对象参数
  • OPENCV(0-1之0.0)
  • easyrecovery破解版百度云(含Mac/Win版)以及EasyRecovery可以恢复哪些设备
  • [2023年]-hadoop面试真题(一)
  • Kubernetes kafka系列 | k8s部署kafka+zookeepe集群
  • ip广播智慧工地广播喊话号角 IP网络号角在塔吊中应用 通过寻呼话筒预案广播
  • B端系统优化,可不是换个颜色和图标,看看与大厂系统的差距。
  • 【LeetCode热题100】240. 搜索二维矩阵 II
  • three.js 鼠标左右拖动改变玩家视角
  • Pycharm jupyter server process exited with code 1
  • ubuntu 20.04 Python pip 配置 pip.conf
  • GPT-4.5 Turbo意外曝光,最快明天发布?OpenAI终于要放大招了!
  • Ubuntu 中 desktop-amd64 和 live-server-amd64 的区别
  • 第10集《天台教观纲宗》
  • 每日学习笔记:C++ STL 的forward_list
  • 【Java,Redis】Redis 数据库存取字符串数据以及类数据
  • OpenCV 图像重映射函数remap()实例详解
  • Python基础课堂最后一课23——正则对象
  • 【算法训练营】凸包,图(Python实现)
  • webpack5零基础入门-6webpack处理图片资源
  • 计算机基础知识QA
  • 微信小程序一次性订阅requestSubscribeMessage授权和操作详解
  • ARM 汇编指令:(三)运算处理指令
  • 【C++庖丁解牛】STL简介 | string容器初次见面
  • 记OnlyOffice的两个大坑
  • 分享几个Google Chrome谷歌浏览器历史版本下载网站