汇编语言中,怎么单独显示某个寄存器的内容

汇编语言中,怎么单独显示某个寄存器的内容,第1张

回答你这个问题前我需要阐明几个相关概念 比较长 你可能没兴趣看完

不过没有关系,毕竟知识是没有那么容易获得的

OK 回到正题 你是想要显示在寄存器的值

那么 我首先假设:

您的运行环境是有标准输入输出设备(键盘-显示器)的

那么我再假设您的运行环境是在某种OS调度下的,

当然无OS也可以输出你想要的字符,

但是这需要你自己从硬盘MBR自举自己初始化设备自己写设备驱动对硬件IO进行读写

这完全可行,但这确实不切合实际 毕竟有一大堆成熟的OS提供了系统调用接口

也就是API 这样的中间层帮助你 *** 作这些标准输入输出设备显示字符 为何要重新造一堆没啥用的轮子呢

那么好了 到这里 我再假设亲 您的电脑不是MAC 也不是 linux 而是被程序员最为鄙视的windows系统

毕竟这个系统最为广泛,而且易用是吧 大多数人入门PC都是微软的锅不是吗

那么说到这里了 假设了辣么多 麻痹答主还是没有说到底怎么将这些破烂寄存器里的数字变成ASCII字符显示在标准输入输出设备上啊

亲,角多嘛呆 概念如果没有阐明 亲你也是非常糊涂的不是吗

那么再回主题

显然 OS不可能让你直接 *** 作 显存和I/O端口往显示器上丢字 第一,这不安全 系统资源必须由核心代码独占 其二,大多数用户对具体如何 *** 纵显卡往显示器上丢字这种又臭又长的破过程不感兴趣

毕竟你只是想丢几个字到垃圾显示器上嘛 那么就用系统给的API接口不就完了

那么调用系统API接口 那么就需要声明API库 的二进制调用头文件

这个有人帮你做过这事了 无论是masm32 还是radasm 还是masmplus啥的 都集成了微软的MASM库调用 inc 头 你只要找到相应的头文件include一下 然后在 invoke一下 他们提供的函数就行了

当然编译参数里不要忘记加上命令行程序的开关

最后还有一件事,也就是传说中的 二进制整形 如何变成 16进制ASCII 或者 10进制ASCII字串 这个一言难尽 还是写一段 HEX2ASCII 的过程给你看一下吧 你参考一下

或者你不愿写这个 调用 itoa() 或者 wsprintf()这样的函数 自己转换一下也是很简单的事

DATA SEGMENT

A DB 05FH

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA;置DS段初值

MOV DS,AX

MOV DL,A

MOV CL,4

SHR DL,CL;右移4位获得高4位

ADD DL,030H;0~9加30H,A~F加37H

CMP DL,'9';将双分支转化为单分支

JBE NEXT1

ADD DL,7

NEXT1:MOV AH,2

INT 21H;显示高位十六进制

MOV DL,A

AND DL,0FH;高4位清0获得低4位

ADD DL,30H

CMP DL,'9'

JBE NEXT2

ADD DL,7

NEXT2:MOV AH,2

INT 21

MOV AH,4CH

INT 21H

CODE ENDS

END START

当然这是16bit 版本 其实改成 32版本也不难 首先要你看得懂

另外PS: 你要保护eax的内容 用 push eax 压栈指令不就完了 要用的时候 pop eax就好了

但是记得堆栈需要后入先出 要不爆栈别怪我

编译只是保证没有语法错误,但是不能保证你的程序的算法没有错误,如果你的程序中有比较严重的Bug,如果说访问了系统保护的内存,出于保护,windows会中止你的程序,或是抛出一个异常,如果异常没有被捕获并加以处理,程序也会中止,当然,这时你也有机会用调试工具去debug。这种运行期的错误是需要程序员去调试排除的。

程序员一直都是一个备受人们关注的群体。2014年,据IDC统计,全球约有1850万名程序员,中国占10%。随着近年全国互联网创业热潮的兴起,“互联网+”、“云计算”以及“智能硬件”等领域发展迅速,市场对程序员的需求更为旺盛。

由程序员客栈联合稀土掘金通过对北京、广东、浙江、上海等全国28个省、直辖市及特别行政区的10W+优秀程开发者进行了一次调查。调查报告里对程序

以上就是关于汇编语言中,怎么单独显示某个寄存器的内容全部的内容,包括:汇编语言中,怎么单独显示某个寄存器的内容、为什么编译正确的c++程序在运行时会停止工作、爆栈程序员是一种什么样的存在等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9329246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存