汇编寄存器中 ax 和[ax] 啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编寄存器中 ax 和[ax] 啥区别?相关的知识,希望对你有一定的参考价值。
1、意义不同
AX是指令中可以用的寄存器名表达式。[ax]常用于存放算术、逻辑运算中的操作数或结果。所有的I/O指令都要使用累加器与外设接口传递数据。
2、用法不同
ax寄存器使用最频繁,常用来存放参与运算的数据或是存储运算的结果。ax寄存器为16字节,可以灵活处理8位数据。
3、操作不同
操作ax的时候就是直接用ax中的值,[ax]是将ax中的值当作一个地址,然后将这个地址对应该内存中的值来操作。比如mov bx,ax是将ax中的值给bx, mov bx,[ax],是将内存中ds段ax这个偏移地址中的那个值给bx。
扩展资料:
通用寄存器组包括AX、BX、CX、DX4个16位寄存器,用以存放16位数据或地址。也可用作8位寄存器。用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL。
只能存放8位数据,不能存放地址。它们分别是AX、BX、CX、DX的高八位和低八位。若AX=1234H,则AH=12H,AL=34H。通用寄存器通用性强,对任何指令,它们具有相同的功能。
为了缩短指令代码的长度,在8086中,某些通用寄存器用作专门用途。例如,串指令中必须用CX寄存器作为计数寄存器,存放串的长度,这样在串操作指令中不必给定CX的寄存器号,缩短了串操作指令代码的长度。
参考资料:百度百科-寄存器
参考技术AAX是指令中可以用的寄存器名表达式。
[ax]常用于存放算术、逻辑运算中的操作数或结果。所有的I/O指令都要使用累加器与外设接口传递数据。
ax寄存器使用最频繁,常用来存放参与运算的数据或是存储运算的结果。ax寄存器为16字节,可以灵活处理8位数据。
扩展资料:
通用数据处理器通常用于处理数据,类别有:AX 累加寄存器。所有外部设备的输入输出指令只能使用AL或AX做为数据寄存器。BX 基址寄存器。可以用作数据寄存器,访问存储器时,可以存放被读写的存储单元的地址。是具有双重功能的寄存器。
CX 计数寄存器。可以用作数据寄存器,在循环操作、移位操作时用作寄存器。DX 数据寄存器。在乘除法中作为数据累加器,在输入输出操作中存放端口的地址。SP 堆栈指针寄存器。存放栈顶的偏移地址,供堆栈操作使用。
参考资料:百度百科-寄存器
参考技术B 操作ax的时候就是直接用ax中的值,[ax]是将ax中的值当作一个地址,然后将这个地址对应该内存中的值来操作。比如mov bx,ax是将ax中的值给bx, mov bx,[ax],是将内存中ds段ax这个偏移地址中的那个值给bx,不知道我说的你能不能明白,追问谢谢啊,再问一下,如何将寄存器中的值在屏幕上输出呢?谢谢啦
追答16位汇编好像是将数据写入0b800开始的内存就可以显示,我是看王爽的那本《汇编语言》学到的,还有就是调用其他的库,来实现比如,Intel汇编语言程序设计中有一个irvine32的库,里面就有一个DumpRegs过程,可以显示寄存器的值
本回答被提问者采纳 参考技术C 对AX进行操作时操作的是AX寄存器里面的值 对[AX]进行操作的时候 是将AX寄存器里面的值当做偏移地址 对DS:[AX]这个内存单元里面的值进行操作 参考技术D 一个是ax的内容,一个是把ax的内容作为内存地址,读取内存中的内容汇编语言 (王爽 第三版)第二章:寄存器
(1)写出每条汇编指令执行后相关寄存器中的值(注意区别是mov还是add,操作对象是16位寄存器还是8位寄存器)
mov ax,62627 AX=F4A3H
mov ah,31H AX=31A3H
mov al,23H AX=3123H
add ax,ax AX=6246H (因为操作的对象是16位寄存器所以除了最高位都存在进位)
mov bx,826CH BX=826CH
mov cx,ax CX=6246H
mov ax,bx AX=826CH
mov ax,bx AX=04D8H
mov al,bh AX=0482H
mov ah,bl AX=6C82H
add ah,ah AX=D882H
add al,6 AX=D888H
add al,al AX=D810H
mov ax,cx AX=6246H
(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方
mov ax 2
add ax ax
add ax ax
add ax ax
以上是关于汇编寄存器中 ax 和[ax] 啥区别?的主要内容,如果未能解决你的问题,请参考以下文章