汇编语言——输入4位以内的16进制数,存进BX

2024-04-20 02:44

本文主要是介绍汇编语言——输入4位以内的16进制数,存进BX,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

data segment
data ends
stack segment stackdw 100 dup (?)top label word
stack ends
code segmentassume cs:code,ds:data,ss:stack
main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,topmov bx,0mov cx,4			;最多输入4位16进制数
L1:	mov ah,7			;用7号功能输入,不回显int 21hcmp al,0dh			;回车,跳转到输出bx,如果没有输入就回车,bx=0je exitcmp al,30h			;输入的字符小于30h,重新输入jb L1cmp al,39h			;输入的字符大于39h,到L2继续判断合法性ja L2mov dl,al			;0-9合法输入,回显mov ah,2int 21hsub dl,30h			;输入的0-9要减30h才能变成ASCII码0-9push cx				;保护cxmov cl,4rol bx,cl			;bx左移4位add bl,dl			;bx低八位bl加上dlpop cx				;还原cxdec cxcmp cx,0			;cx=0跳转到输出bx,否则继续输入je exit				jmp L1L2:cmp al,41h			;输入的字符小于41h(A),重新输入jb L1cmp al,46h			;输入的字符大于46h(F),到L3继续判断合法性ja L3mov dl,al			;A-F合法输入,回显mov ah,2int 21hsub dl,37h			;输入的A-F要减37h才能变成ASCII码10-15push cxmov cl,4shl bx,cladd bl,dlpop cxdec cxcmp cx,0			;cx=0跳转到输出bx,否则继续输入je exitjmp L1L3:cmp al,61h			;输入的字符小于61h(a),重新输入jb L1cmp al,66h			;输入的字符大于66h(f),重新输入ja L1mov dl,al			;a-f合法输入,回显mov ah,2int 21hsub dl,57h			;输入的a-f要减57h才能变成ASCII码10-15push cxmov cl,4shl bx,cladd bl,dlpop cxdec cxcmp cx,0			;cx=0跳转到输出bx,否则继续输入je exitjmp L1;以16进制输出bx
exit:;回车换行mov dl,0dhmov ah,2int 21hmov dl,0ahmov ah,2int 21hmov cx,4			;输出4位16进制数L4:push cxmov cl,4rol bx,clmov dl,bland dl,0fh			;屏蔽高4位	cmp dl,9ja L5add dl,30h			;0-9jmp printL5:add dl,37h			;A-Fprint:mov ah,2int 21hpop cxloop L4mov ah,4chint 21hmain endp
code endsend main

这篇关于汇编语言——输入4位以内的16进制数,存进BX的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

当你输入一个网址后都发生什么

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~

16 子组件和父组件之间传值

划重点 子组件 / 父组件 定义组件中:props 的使用组件中:data 的使用(有 return 返回值) ; 区别:Vue中的data (没有返回值);组件方法中 emit 的使用:emit:英文原意是:触发、发射 的意思components :直接在Vue的方法中声明和绑定要使用的组件 小炒肉:温馨可口 <!DOCTYPE html><html lang="en"><head><

react笔记 8-16 JSX语法 定义数据 数据绑定

1、jsx语法 和vue一样  只能有一个根标签 一行代码写法 return <div>hello world</div> 多行代码返回必须加括号 return (<div><div>hello world</div><div>aaaaaaa</div></div>) 2、定义数据 数据绑定 constructor(){super()this.state={na

c++习题30-求10000以内N的阶乘

目录 一,题目  二,思路 三,代码    一,题目  描述 求10000以内n的阶乘。 输入描述 只有一行输入,整数n(0≤n≤10000)。 输出描述 一行,即n!的值。 用例输入 1  4 用例输出 1  24   二,思路 n    n!           0    1 1    1*1=1 2    1*2=2 3    2*3=6 4