AHU 汇编 实验五

2024-03-12 01:44
文章标签 实验 汇编 ahu

本文主要是介绍AHU 汇编 实验五,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

  • 实验过程:

源代码:

data segmentbuff1 db 'Please input a number(H):$'buff2 db 10,?,10 dup(?),13,10buff3 db 'The consequent is:$'data endscode segmentassume cs:code,ds:datamain proc farpush dsxor ax,axpush axmov ax,datamov  ds,axcall tips1      ;调用第一个字符串,提示用户输入call input1     ;调用程序,将数字输入进缓冲区保存call get4h      ;将缓冲区的ASCII码转换成实际的二进制call tips2      ;调用第三个字符串,显示结果call output     ;将缓冲区的二进制转换成ASCII码输出mov ah,4chint 21hretmain endptips1 proc nearmov dx,offset buff1mov ah,9int 21hrettips1 endptips2 proc nearmov dx,offset buff3mov ah,9int 21hrettips2 endpinput1 proc nearlea dx,buff2mov ah,0ahint 21hmov dl,13mov ah,2int 21hmov dl,10mov ah,2int 21hretinput1 endpget4h proc nearlea si,buff2+2   ;将第二个字符串的首地址给si寄存器保存mov bx,0         ;用bx当作计数器和相对偏移量input:mov al,byte ptr[si+bx]cmp al,30hjl exitcmp al,39hjle dig        ;>='0'&&<='9'cmp al,41h     ;<'A',exit     判断输入的合法性jl exitcmp al,46h     ;>='A'&&<='F'  如果是0~9,就进入dig,如果是A~F就进入hexjle hexjmp exitdig:sub al,30hmov byte ptr[si+bx],al      ;原来的缓冲区位置存放输入的真实数值jmp exithex:sub al,37h    mov byte ptr[si+bx],al      ;原来的缓冲区位置存放输入的真实数值jmp exitexit:inc blcmp bl,4                     ;计数功能jz returnjmp inputreturn:retget4h endpoutput proc nearlea si,buff2+2      ;用si寄存器保存第二个字符串的首地址mov bx,0            ;bx充当计数器和相对偏移量,外层循环start0:xor cx,cxmov cx,4mov al,[si+bx]      ;内层循环,用cx计数start1:shr al,1            ;将al右移,判断CFjc put1             ;是1,就用dx保存1,压栈mov dx,0            ;是0,就用dx保存0,压栈push dxdec clcmp cl,0           ;判断四位有没有全部入栈jz start2          ;全部入栈了,就开始输出jmp start1put1:mov dx,1push dxdec clcmp cl,0jz start2jmp start1start2:mov cx,4          ;再用cx当作内层循环计数器start3:pop dxadd dl,30hmov ah,2int 21hdec clcmp cl,0          jz exit1jmp start3        ;出栈输出exit1:inc bx           ;进行外层循环计数mov dl,0mov ah,2int 21hcmp bx,4jz return1jmp start0return1:retoutput endpcode endsend main

运行结果:

  • 实验小结:

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

这篇关于AHU 汇编 实验五的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799761

相关文章

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

汇编:嵌入式软件架构学习资源

成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com**    - **网址**: [Embedded.com](https://www.embedded.com/)    - **简介**: 这是一个专注于嵌入式系统设计的专业网

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信

LTspice模拟CCM和DCM模式的BUCK电路实验及参数计算

关于BUCK电路的原理可以参考硬件工程师炼成之路写的《 手撕Buck!Buck公式推导过程》.实验内容是将12V~5V的Buck电路仿真,要求纹波电压小于15mv. CCM和DCM的区别: CCM:在一个开关周期内,电感电流从不会到0. DCM:在开关周期内,电感电流总会到0. CCM模式Buck电路仿真: 在用LTspice模拟CCM电路时,MOS管驱动信号频率为100Khz,负载为10R(可自

HCIA--实验十:路由的递归特性

递归路由的理解 一、实验内容 1.需求/要求: 使用4台路由器,在AR1和AR4上分别配置一个LOOPBACK接口,根据路由的递归特性,写一系列的静态路由实现让1.1.1.1和4.4.4.4的双向通信。 二、实验过程 1.拓扑图: 2.步骤: (下列命令行可以直接复制在ensp) 1.如拓扑图所示,配置各路由器的基本信息: 各接口的ip地址及子网掩码,给AR1和AR4分别配置

GDB 查看汇编

查看汇编 x disassemble

OpenGL/GLUT实践:流体模拟——数值解法求解Navier-Stokes方程模拟二维流体(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 流体模拟实现2.1.1 网格结构2.1.2 数据结构2.1.3 程序结构1) 更新速度场2) 更新密度值 2.1.4 实现效果 2.2 颜色设置2.2.1 颜色绘制2.2.2 颜色交互2.2.3 实现效果 2.3 障碍设置2.3.1 障碍定义2.3.2 障碍边界条件判定2.3.3 障碍实现2.3.