X86汇编将寄存器中的内容以十进制输出

 1 code segment
 2         assume cs:code
 3 strart:
 4         mov ax ,1234                    ;将要输出的数字
 5         or  ax , ax
 6         jz  zero
 7         mov bx , -1                     ;余数栈底标志
 8         push bx
 9         mov bx , 10                     ;除数
10
11 repeat: xor dx , dx
12         div bx
13         mov cx , ax                     ;商
14         or  cx , dx
15         jz  print_exit                  ;商与余数全零则结束
16         push dx
17         jmp repeat
18
19 zero:   mov dl , 30h
20         mov ah , 02h
21         int 21h
22
23 print_exit:
24         pop dx
25         cmp dx , -1
26         je  exit
27         add dx , 30h
28         mov ah , 02h
29         int 21h
30         jmp print_exit
31
32 exit:
33         mov ax , 4c00h                  ;返回DOS
34         int 21h
35
36 code ends
37 end  strart
时间: 2024-10-14 08:43:03

X86汇编将寄存器中的内容以十进制输出的相关文章

X86汇编2.寄存器

最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时. 1.CPU组成一个典型CPU由:运算器.控制器.寄存器(CPU工作原理)等部件构成,这些器件依靠内部总线连接.运算器进行信息处理寄存器进行信息存储,每个CPU有不同数量的寄存器控制器控制各种器件进行工作内部总线连接各种器件,在他们之间进行数据的传送 对于一个汇编程序员来说,寄存器是CPU

【x86汇编】寄存器

8086 Register: 寄存器没有地址的概念,地址都是指内存中 数据寄存器: AX(AH AL)         累加器 BX(BH BL)         基址寄存器 CX(CH CL)         计数寄存器 DX(DH DL)        数据寄存器 段寄存器:(存各种段首地址) CS     代码段寄存器         当前要处理的指令在内存中的段首地址(物理地址=(CS<<4)+IP) DS    数据段寄存器         当前数据在内存中的段首地址(物理地址=(D

Java读写文件,在文件中搜索内容,并输出含有该内容的所有行

1.问题描述 在一个目录及子目录下查找 TXT或Java文件,从中搜索所有"对象"字样的行. 在D盘中的所有文件中搜索含有"对象"的行. 2.解题思路 先找出D盘下所有文件 再对每个文件中的每行内容进行,进行查找,若含有"对象"两字,输出该行. 3.程序代码 import java.io.File; import java.io.IOException; import java.util.Scanner; public class B { sta

汇编——段寄存器

段寄存器 8086CPU有14个寄存器 AX,BX,CX,DX,si,di,sp,bp,ip,cs,ss,ds,es,psw 其中有8个通用寄存器 8086寄存器16位,可以存放两个字节 AX BX CX DX一般用来存放一般数据 为保证兼容性,这四个寄存器可以分为两个独立的8位寄存器使用 AX可以分为AH和AL H高L低 同样的对于ABCD-X 字在寄存器中的存储 一个字可以存在一个16位寄存器中 Word=2B 关于数制的讨论 二进制太冗长 几条汇编指令 Mov ax,18         

X86汇编指令

8086CPU地址总线宽度为20, 也就是说一个内存物理地址是5位,内存地址空间为1Mb:数据总线为16位:寄存器为16位. 16位结构的CPU包括以下特性: 1,运算符最多处理16位数据. 2,寄存器最大宽度为16位. 3,寄存器与运算器之间的通路是16位. 这里就出现了一个问题,如果由16位推出20位的物理地址呢? 所以就出现了段的概念: 一个物理地址由段地址和偏移地址构成,即物理地址=段地址*16 + 偏移地址 也可以说段地址左移4位,然后我们可以推出偏移地址最大为2的16次方,即16Kb

python 修改文件中的内容

在python的文件操作中,是没有办法对文件中具体某行或者某个位置的内容进行局部的修改的,如果需要对文件的某一行内容进行修改,可以先将文件中的所有的内容全部读取出来,再进行内容判断,是否是需要修改的内容,如果是就替换内容,并且将修改替换过的内容和没有修改的内容全部写入到新的文件中. # 打开旧文件 f = open('file_text.txt','r',encoding='utf-8') # 打开新文件 f_new = open('file_text_bak.txt','w',encoding

为什么X86汇编中的mov指令不支持内存到内存的寻址?

在X86汇编中,MOV [0012H], [0016H]这种指令是不允许的,至少得有一个操作数是寄存器.当然,这种问题在用高级语言的时候看不到,感觉好像基本上都是从内存到内存啊,为毛到了汇编就不行了???这个问题在stack overflow有个解释不错: The answer involves a fuller understanding of RAM. Simply stated, RAM can only be in two states, read mode or write mode.

linux平台学x86汇编(十九):C语言中调用汇编函数

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 除了内联汇编以外,还有一种途径可以把汇编代码整合到C/C++语言中,C/C++语言可以直接调用汇编函数,把输入值传递给函数,然后从函数获得输出值. 如果希望汇编语言函数和C/C++程序一起工作,就必须显示地遵守C样式的函数格式,也就是说所有输入变量都必须从堆栈读取,并且大多数输入值都返回到EAX嫁寄存器中.在汇编函数代码中,C样式函数对于可以修改哪些寄存器和函数必须保留哪些寄

linux平台学x86汇编(十六):在汇编语言中调用C库函数

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 其实在汇编语言中也是可以使用C库函数的,这一节我们来看一下如何在汇编语言中调用C库函数以使得我们的程序看上去很方便地和用户交互. C库包括C程序通用的喝多函数,如printf和exit等,下面我们紧接着上一节的知识来实现一个两整数想加的计算并输出计算结果的程序. # libc.s .section .data output: .asciz "The result is %d.