MOV AX,ES:[BX+SI]是什么寻址方式
时间: 2023-06-08 22:05:17 浏览: 232
这是基址加变址寻址方式。其中AX是CPU中的寄存器,ES:[BX+SI]表示BX和SI两个寄存器所存储地址的和再加上ES段寄存器中的内容,最终得到一个地址,而该地址所存储的内容则在MOV指令的源操作数中。
相关问题
MOV+AX,BX+MOV+AX,0304+MOV+AX,[0304]+MOV+AX,[BX]+MOV+AX,[BX+0001]+MOV+AX,[BX+SI]+MOV+AX,[BX+SI+0001],
这些都是汇编语言中的指令,用于将数据从一个位置传送到另一个位置。其中MOV指令是数据传送指令,用于将一个数据从一个位置传送到另一个位置。而AX、BX、0304、[0304]、[BX]、[BX+0001]、[BX+SI]、[BX+SI+0001]都是寄存器或内存地址,用于存储数据。下面是每个指令的解释:
1. MOV AX:将AX寄存器中的数据传送到另一个位置。
2. BX+MOV+AX:将BX寄存器中的数据传送到AX寄存器中。
3. 0304+MOV+AX:将地址0304中的数据传送到AX寄存器中。
4. [0304]+MOV+AX:将地址0304中的数据传送到AX寄存器中。
5. [BX]+MOV+AX:将BX寄存器中的地址所指向的数据传送到AX寄存器中。
6. [BX+0001]+MOV+AX:将BX寄存器中的地址加上0001所指向的数据传送到AX寄存器中。
7. [BX+SI]+MOV+AX:将BX寄存器中的地址加上SI寄存器中的数据所指向的数据传送到AX寄存器中。
8. [BX+SI+0001]+MOV+AX:将BX寄存器中的地址加上SI寄存器中的数据再加上0001所指向的数据传送到AX寄存器中。
assume ds:data, cs:code data segment db 'welcome to masm!' db 2H,24H,71H data ends code segment start: mov ax,data mov ds,ax mov ax,0B800H mov es,ax mov cx,10h mov bx,0 mov si,0 s0:mov ax,[bx] mov es:[0720h+si+bx],ax mov al,2h mov byte ptr es:[0721h+si+bx],al inc bx inc si loop s0 mov cx,10h mov bx,0 mov si,0 s1:mov ax,[bx] mov es:[07c0h+si+bx],ax mov al,24h mov byte ptr es:[07c1h+si+bx],al inc bx inc si loop s1 mov cx,10h mov bx,0 mov si,0 s2:mov ax,[bx] mov es:[0860h+si+bx],ax mov al,71h mov byte ptr es:[0861h+si+bx],al inc bx inc si loop s2 mov ax,4c00h int 21h code ends end start 改成子程序形式
下面是将代码改写成子程序形式的程序:
```
assume ds:data, cs:code
data segment
db 'welcome to masm!'
db 2H,24H,71H
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0B800H
mov es,ax
call print_string_attr_1
call print_string_attr_2
call print_string_attr_3
mov ax,4c00h
int 21h
print_string_attr_1:
mov cx,10h
mov bx,0
mov si,0
s0:
mov ax,[bx]
mov es:[0720h+si+bx],ax
mov al,2h
mov byte ptr es:[0721h+si+bx],al
inc bx
inc si
loop s0
ret
print_string_attr_2:
mov cx,10h
mov bx,0
mov si,0
s1:
mov ax,[bx]
mov es:[07c0h+si+bx],ax
mov al,24h
mov byte ptr es:[07c1h+si+bx],al
inc bx
inc si
loop s1
ret
print_string_attr_3:
mov cx,10h
mov bx,0
mov si,0
s2:
mov ax,[bx]
mov es:[0860h+si+bx],ax
mov al,71h
mov byte ptr es:[0861h+si+bx],al
inc bx
inc si
loop s2
ret
code ends
end start
```
以上程序将每个循环改写成了一个子程序,分别是print_string_attr_1、print_string_attr_2和print_string_attr_3。在主程序中调用这三个子程序即可完成字符串及属性值输出到80×25彩色字符模式显示缓冲区的操作。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)