首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

8086汇编实现对数字的存储、输出

QQ20181230-173338@2x.png 目标 设计一个INPUT子程序,使其能够接收用户输入的数字(以字符串的形式),并将数字存储到AX寄存器。...设计一个DECOUT/BINOUT/HEXOUT子程序,使他们能够以十进制/二进制/十六机制的形式将AX中的数字输出到屏幕上。...分析 对于INPUT子程序,我们需要调用DOS功能接收用户输入的字符串,将ASCII码转为数字,再依次乘以10、100...由于CPU执行指令时会占用AX,我们将积的累加和存储在内存变量中,最后一步复制到...对于DECOUT子程序,我们对AX中的数除以进制数,将余数保存到内存中,循环此过程直至商为0,最后借用si寄存器变址寻址反向输出余数(转换为ASCII码)即可向用户展示AX中的数字。...20h num db 0 content db 20h dup(0) data ends ... mov dx,offset str mov ah,0ah int 21h 外循环(ASCII码转数字

2.7K20

多线程交替打印数字—多种实现

# 多线程交替打印数字—多种实现 # 使用synchronized锁实现 public class Test { public static void main(String[] args)...e) { e.printStackTrace(); } } } } } # 打印结果...奇数:99 偶数:100 通过加锁和notify()、wait()机制可以有效的实现两个线程分别打印奇数和偶数,但互斥锁始终会影响性能,效率不高。...,使用volatile关键字可以保证变量的可见性,但并不能保证num的原子性,即多个线程操作num时,他是非线程安全的,此处能够正确打印的原因是因为flag标志位的判断。...所以正确的写法应该在if判断内,当打印之后便会阻塞当前线程,由于数字已经打印,再次循环时便会进入到else的判断逻辑,即当前线程发现不是属于自己该打印数字就会尝试唤醒另一个线程。

47610

【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 反汇编二进制机器码 | 打印汇编数据 )

文章目录 一、反汇编二进制机器码 二、打印汇编数据 一、反汇编二进制机器码 ---- 在创建 Capstone 实例对象 , 并设置 detail 属性为 True ; 在之前读取了 节区 二进制数据...= capstone.disasm(raw, 0) 二、打印汇编数据 ---- 调用 反汇编解析器 的 disasm 方法 , 得到的是反汇编后的汇编代码列表 ; 遍历该汇编代码列表 , 可以得到该行汇编代码对应的...写寄存器:esp ; 机器码 :53 在开始位置打印汇编代码地址 , 然后是 汇编指令 , 操作对象 ; 之后将汇编代码 读取的寄存器 , 写出的寄存器 打印出来 ; 最后打印出该行汇编代码对应的机器码...; 打印汇编代码 : # 遍历反汇编代码列表 for line in disasm: # 打印每行汇编代码的 地址 ,...[i] # 打印最终数据 print(text) 分析 打印结果 : 该操作是 入栈操作 , 肯定会影响到 esp 栈寄存器 ; 该汇编代码对应的机器码是

71110

汇编语言--高级汇编技术

汇编语言--高级汇编技术 子程序的封装 程序的多文件组织 汇编指令汇 数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制与杂项操作指令 汇编伪操作汇 处理机选择伪操作 段定义伪操作...程序开始和结束伪操作 数据定义及存储器分配伪操作 表达式赋值伪操作 地址计数器与对准伪操作 基数控制伪操作 汇编操作符汇总 算术操作符 逻辑和移位操作符 关系操作符 数值回送操作符 属性操作符 汇编过程....exe的诞生 程序运行步骤及生成的文件 汇编过程 宏汇编 C语言中的预处理命令 汇编中的宏---由C中的宏定义说起 举例 语法和术语 子程序VS宏定义 宏中的局部标号 变元是操作码的一部分 宏库 条件汇编...地址的基础上,加8,然后再对应的地址分配下面这个变量内存空间 VAR3 DW 1357H ALIGN伪操作: 包装数组边界从2的整数次幂地址开始 EVEN伪操作: 使下一个变量或指令开始与偶数字节地址...TABLE DB 'ABCD' ---- 属性操作符 ---- 汇编过程 .exe的诞生 ---- 程序运行步骤及生成的文件 ---- 汇编过程 ---- 宏汇编 C语言中的预处理命令 -

1.6K31

汇编语言之MIPS汇编

printf这么一说,如果想要输出文本,需要借助syscall指令 如果想要输出一个数字1,那么syscall指令从$a0寄存器中取出需要输出的数据 因此, 你在执行syscall指令之前需要将数据提前放入...数据类型的指定保存在$v0寄存器中 # $v0=1, syscall--->print_int # $v0=4, syscall--->print_string v0存入1,表示syscall将a0中的数据当做数字输出...# \0表示字符串结尾 msg_no: .ascii "NO\0" .text li $v0,5 #控制syscall为读取integer状态 syscall # 此时io控制台显示光标,可输入数字...,回车后将输入的数字保存在$v0中 move $t0,$v0 #由于接下来还需要使用$v0 ,为避免数据被覆盖掉 将输入的数据转移到$t0中进行临时保存 li $v0,5 syscall move $...,如果我们要依次打印1,2,3三个整数,那么汇编如下: print1: li $v0,1 li $a0,1 syscall jr $ra print2: li $v0,1 li $a0,2

9.5K30

汇编语言_汇编语言程序

可以来看一段汇编源程序 assume cs:codesg codesg segment mov ax,0123h mov bx,0456h add ax,bx add ax,ax mov ax,4c00h...int 21h codesg ends end 开头和结尾的两句代表伪指令 只有编译器可以读懂 汇编指令可以被翻译为机器码最终被cpu执行 汇编程序 就是包含汇编指令和伪指令的文本 mov ax,4c00h...int 21h 跟C语言程序的return 0一样 返回控制权 一个汇编程序是由多个段组成的 这些段被用作各种空间来使用 一个有意义的汇编程序至少需要一个段 且每个段都需要段名 段名 segment-...-段的开始 段名 ends--段的结束 assume假设 含义是假设某一段寄存器和程序中我们定义的段名关联起来 可以理解为和变量的引用一个意思 利用汇编程序计算2^3 assume cs:code...code segment mov ax,2 add ax,ax add ax,ax code ends end 汇编程序的编写不是我学习的重点,这里直接跳过 需要的可以自己去看一下 [...]的规定与(

14920
领券