AHU 汇编 实验五

  • 实验名称:实验五 分支与循环程序设计

二、实验内容:从键盘输入一个四位的16进制数(其中字母为大写),将其转化为二进制数提示输出。

  • 实验过程:

源代码:

data segment

  buff1 db 'Please input a number(H):$'

  buff2 db 10,?,10 dup(?),13,10

  buff3 db 'The consequent is:$'

data ends

code segment

  assume cs:code,ds:data

main proc far

  push ds

  xor ax,ax

  push ax

  mov ax,data

  mov  ds,ax

  call tips1      ;调用第一个字符串,提示用户输入

  call input1     ;调用程序,将数字输入进缓冲区保存

  call get4h      ;将缓冲区的ASCII码转换成实际的二进制

  call tips2      ;调用第三个字符串,显示结果

  call output     ;将缓冲区的二进制转换成ASCII码输出

  mov ah,4ch

  int 21h

  ret

  main endp



tips1 proc near

   mov dx,offset buff1

   mov ah,9

   int 21h

ret

tips1 endp



tips2 proc near

   mov dx,offset buff3

   mov ah,9

   int 21h

ret

tips2 endp



input1 proc near

    lea dx,buff2

    mov ah,0ah

    int 21h

    mov dl,13

    mov ah,2

    int 21h

    mov dl,10

    mov ah,2

    int 21h

ret

input1 endp





get4h proc near

  lea si,buff2+2   ;将第二个字符串的首地址给si寄存器保存

  mov bx,0         ;用bx当作计数器和相对偏移量

input:

  mov al,byte ptr[si+bx]

  cmp al,30h

  jl exit

  cmp al,39h

  jle dig        ;>='0'&&<='9'

  cmp al,41h     ;<'A',exit     判断输入的合法性

  jl exit

  cmp al,46h     ;>='A'&&<='F'  如果是0~9,就进入dig,如果是A~F就进入hex

  jle hex

  jmp exit



dig:

  sub al,30h

  mov byte ptr[si+bx],al      ;原来的缓冲区位置存放输入的真实数值

  jmp exit



hex:

  sub al,37h    

  mov byte ptr[si+bx],al      ;原来的缓冲区位置存放输入的真实数值

  jmp exit





exit:

  inc bl

  cmp bl,4                     ;计数功能

  jz return

  jmp input



return:ret

get4h endp





output proc near

  lea si,buff2+2      ;用si寄存器保存第二个字符串的首地址

  mov bx,0            ;bx充当计数器和相对偏移量,外层循环

start0:

  xor cx,cx

  mov cx,4

  mov al,[si+bx]      ;内层循环,用cx计数

start1:

  shr al,1            ;将al右移,判断CF

  jc put1             ;是1,就用dx保存1,压栈

  mov dx,0            ;是0,就用dx保存0,压栈

  push dx

  dec cl

  cmp cl,0           ;判断四位有没有全部入栈

  jz start2          ;全部入栈了,就开始输出

  jmp start1

put1:

  mov dx,1

  push dx

  dec cl

  cmp cl,0

  jz start2

  jmp start1

start2:

  mov cx,4          ;再用cx当作内层循环计数器

start3:

  pop dx

  add dl,30h

  mov ah,2

  int 21h

  dec cl

  cmp cl,0          

  jz exit1

  jmp start3        ;出栈输出

exit1:

    inc bx           ;进行外层循环计数

    mov dl,0

    mov ah,2

    int 21h

   cmp bx,4

   jz return1

   jmp start0

return1:ret

output endp

code ends

end main

运行结果:

  • 实验小结:

经过本次实验,我对使用汇编语言进行编程有了更高能力的提升,和第四次实验相比,这次实验更为简单,只需要把输入的16进制转换成二进制,保存后,再写一个子程序将2进制的值以ASCII码的方式输出出来,在这次实验中,我还提升了运用debug的能力,通过运用debug我找出了许多错误,解决了我逻辑算法上的缺陷,希望在以后的不断编程中,我的能力能得到进一步提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/448960.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS 02

1.复合选择器 &#xff08;1.1&#xff09;后代选择器 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

C++实现引用计数(二)

实现引用计数 引言实现集成开发环境项目结构实现代码运行结果 注意 引言 C中经常使用智能指针来管理内存。对于共享指针shared_ptr的原理&#xff1a;每当有一个指针指向这块内存&#xff0c;引用计数的值加一&#xff0c;每当一个指针不再指向这块内存&#xff0c;引用计数的…

CircuitBreaker断路器(服务熔断,服务降级)

分布式系统面临的问题: 复杂分布式体系结构中的应用程序有数十个依赖关系&#xff0c;每个依赖关系在某些时候将不可避免地失败。 1.服务雪崩 多个微服务之间调用的时候&#xff0c;假设微服务A调用微服务B和微服务C&#xff0c;微服务B和微服务C又调用其它的微服务&#xff…

【代码随想录】【二叉树】day18:二叉树的左下角的值,路径总和、构造二叉树

1二叉树左下角的值 左下角的值&#xff1a;最后一层最左侧的节点的值 递归 from collections import deque class TreeNode:def __init__(self,val,leftNone,rightNone):self.val valself.left leftself.right rightclass solution:def leftBottomNode(self,root):self.m…

计算机网络-第4章 网络层(1)

主要内容&#xff1a;网络层提供的两种服务&#xff1a;虚电路和数据报&#xff08;前者不用&#xff09;、ip协议、网际控制报文协议ICMP、路由选择协议&#xff08;内部网关和外部网关&#xff09;、IPv6,IP多播&#xff0c;虚拟专用网、网络地址转换NAT&#xff0c;多协议标…

C++作业day1

2> 试编程 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 #include <iostream> #include <string.h>using namespace std;int main() {string str;cout << "请输…

文档版面分析数据集整理

版面分析数据集 这里整理了常用版面分析数据集&#xff0c;持续更新中&#xff1a; publaynet数据集CDLA数据集TableBank数据集D4LA 数据集DocLayNet文档布局分割数据集M6Doc数据集 版面分析数据集多为目标检测数据集&#xff0c;除了开源数据&#xff0c;用户还可使用合成工…

应用方案丨 D55125ADA A型漏电保护芯片

一、应用领域 新能源充电桩&#xff08;充电枪&#xff09;、智能空开&#xff08;智能微断开关&#xff09;等工业产品&#xff0c;以及电热水器、电烤箱、电烤炉等小家电产品。 二、功能介绍 D55125ADA 是一款高性能 CMOS 漏电保护器专用电路。芯片内部包含稳压电源、放大电…

【CSP试题回顾】201609-3-炉石传说

CSP-201609-3-炉石传说 解题思路 1.类和结构定义 Servant&#xff1a;定义了随从的结构&#xff0c;包含攻击力&#xff08;attack&#xff09;和生命值&#xff08;health&#xff09;。 MyPlayer&#xff1a;定义了玩家的类&#xff0c;包含玩家英雄的生命值&#xff08;h…

GRC宝石实验室鉴定证书,你真的读懂了吗?

随着人们审美需求的提升,兼具审美价值和收藏价值的彩色宝石成为越来越多人的心头好,市面上也随之涌现出许多宝石鉴定机构。在众多选择中,GRC宝石实验室以其高速度、专业化和高标准等诸多优势,成为许多宝石爱好者信赖的选择。 熟悉彩石圈的人,几乎都知道GRC宝石实验室,其总部位于…

网络模块使用Hilt注入

retrofit的异步回调方法已经做了线程切换&#xff0c;切换到了主线程 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"><uses-permission android:name"andr…

中医把脉笔记

目录 寸关尺对应的五脏六腑把脉的时间、姿势、指法自己给自己把脉把脉五步法定寸关尺分浮中沉分快慢辨阴阳看虚实 参考文章 寸关尺对应的五脏六腑 把脉的时间、姿势、指法 时间&#xff1a;应选在清晨病人未活动时&#xff0c;若病人活动&#xff0c;应休息15分钟左右再进行脉…

不会用虚拟机装win10?超详细教程解决你安装中的所有问题!

前言&#xff1a;安装中有任何疑问&#xff0c;可以在评论区提问&#xff0c;博主身经百战会快速解答小伙伴们的疑问 BT、迅雷下载win10镜像&#xff08;首先要下载win10的镜像&#xff09;&#xff1a;ed2k://|file|cn_windows_10_business_editions_version_1903_updated_sep…

前端开发的发展史:框架与技术栈的演变

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

开发跨平台 App 推荐 React Native 还是 Flutter?

Hello大家好我是咕噜铁蛋&#xff01;今天我要和大家一起探讨一个备受关注的话题&#xff1a;“开发跨平台 App 推荐 React Native 还是 Flutter&#xff1f;”在移动应用开发领域&#xff0c;选择合适的跨平台开发框架对于开发者来说至关重要。而React Native和Flutter作为两种…

eclipse maven 项目导入报错

错误&#xff1a;Internal compiler error: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.apt.dispatch.AnnotationDiscoveryVisitor 环境&#xff1a;eclipse Kepler Service Release 2 ,JDK1.7 解决办法&#xff1a;编码不对&#xff0c;修改

微信视频号视频下载全攻略:轻松保存至手机的步骤!

微信视频号已经成为了我们获取信息、分享生活的重要平台。其中丰富的短视频内容&#xff0c;让我们流连忘返。然而&#xff0c;有时我们想要将这些精彩瞬间保存到手机&#xff0c;以便日后观看或分享&#xff0c;那么如何操作呢&#xff1f;本文将详细解析微信视频号保存视频到…

ceph跨集群迁移ceph pool rgw

1、跨集群迁移ceph pool rgw 我这里是迁移rgw的pool l老环境 [rootceph-1 data]# yum install s3cmd -y [rootceph-1 ~]# ceph config dump WHO MASK LEVEL OPTION VALUE RO mon advanced au…

2-LINUX--Linux 系统文件类型与文件权限

一.文件类型 Linux 下所有的东西都可以看做文件&#xff0c;Linux 将文件分为以下几种类型&#xff1a; 1. 普通文件 ‘-’ 2. 目录文件 ‘d’ 3. 管道文件 ‘p’ 4. 链接文件 ‘l’ 5. 设备文件&#xff08;块设备 ’b’ 、字符设备 ‘c’&#xff09; 6. 套接字…

蓝桥杯真题讲解:异或和之和 (拆位、贡献法)

蓝桥杯真题讲解&#xff1a;异或和之和 &#xff08;拆位、贡献法&#xff09; 一、视频讲解二、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;异或和之和 &#xff08;拆位、贡献法&#xff09; 二、正解代码 //拆位考虑 #include<bits/stdc.h> #define endl &…