举例说明INC BYTE PTR[BX]和INC WORD PTR[BX]的区别
时间: 2023-11-06 21:06:11 浏览: 50
INC BYTE PTR[BX]和INC WORD PTR[BX]都是汇编语言中的指令,用于将BX指向的内存单元中的值加1。
区别在于:
- INC BYTE PTR[BX]是对BX指向的内存单元中的8位值进行加1操作,即增加1个字节。
- INC WORD PTR[BX]是对BX指向的内存单元中的16位值进行加1操作,即增加2个字节。
举个例子,假设BX指向的内存单元的初始值为0xABCD,那么执行INC BYTE PTR[BX]操作后,内存单元中的值变为0xABCE;执行INC WORD PTR[BX]操作后,内存单元中的值变为0xABCE。
相关问题
4.写出下列指令中存储器操作数物理地址的计算表达式。(10分) (1) ADD AL, ES:05H[BX] (2)INC BYTE PTR [SI] MOV [BP][DI], DX (4) MOV AL, DELTA[BX][DI]
(1) `ES` 乘以 10H 加上 `BX` 所指向的地址,得到一个偏移地址,然后加上 05H,最终得到物理地址。
计算表达式:`物理地址 = ES*10H + [BX] + 05H`
(2) `SI` 所指向的地址就是物理地址。
计算表达式:`物理地址 = [SI]`
(3) `BP` 乘以 10H 加上 `DI` 所指向的地址,得到一个偏移地址,然后加上 `DX`,最终得到物理地址。
计算表达式:`物理地址 = BP*10H + [DI] + DX`
(4) `BX` 乘以 10H 加上 `DI`,得到一个偏移地址,然后加上 `AL`,再加上 `DELTA` 的段地址,最终得到物理地址。
计算表达式:`物理地址 = DELTA*16 + BX*10H + [DI] + AL`
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彩色字符模式显示缓冲区的操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)