mov bx,0 mov al,’W’ add bx,al 报错怎么修改
时间: 2023-09-30 15:03:28 浏览: 47
在x86汇编语言中,指令操作数必须严格匹配。`add bx, al` 中 `al` 是一个8位寄存器,而 `bx` 是一个16位寄存器,这两个寄存器的大小不一致,所以会报错。要修复这个问题,可以使用 `ax` 寄存器来代替 `al` 寄存器,因为 `ax` 是一个16位寄存器,可以与 `bx` 寄存器进行加法运算。
正确的代码如下所示:
```
mov bx, 0
mov al, 'W'
add ax, bx
add ax, al
mov bx, ax
```
上述代码将 `bx` 寄存器初始化为0,将字符 'W' 的ASCII码值存储在 `al` 寄存器中,然后将 `bx` 寄存器的值加到 `ax` 寄存器中,将 `al` 寄存器的值加到 `ax` 寄存器中,最后将 `ax` 寄存器的值存储在 `bx` 寄存器中。
相关问题
详细解释mov Al,’Z’ add bx,ax
这也是一段 x86 汇编语言的代码。
第一条指令 `mov Al, 'Z'` 的作用是将字母 'Z' 的 ASCII 码(即 90)赋值给寄存器 AL。
第二条指令 `add bx, ax` 的作用是将寄存器 AX 的值加到寄存器 BX 的值中。由于 AX 和 BX 都是 16 位寄存器,因此这条指令将 AX 中的值直接加到 BX 中。
因此,这段代码的作用是将字母 'Z' 的 ASCII 码加到寄存器 BX 中的值上。
修改代码使其不报错operants don’t not match:16bit register and 8 bit address.org 7c00hstart: mov ax, 0b800h mov es, ax mov di, 0 mov cx, 18 mov si, name cld rep movsb mov bx, 0 mov di, name mov cx, 18calc_sum: lodsb add bl, al loop calc_sum mov ah, 0 mov al, bl mov bx, 10 div bx add al, '0' mov bh, 0 mov bl, 0x0f int 10h mov al, ah add al, '0' mov bh, 0 mov bl, 0x0f int 10h jmp $name db 'ZhangYanqing 1204108017'times 510-($-$$) db 0dw 0xaa55
在这段代码中,出现了一个错误是 "operands don’t not match:16bit register and 8 bit address",意思是操作数不匹配:16位寄存器和8位地址。具体来说,是在以下这行代码中:
```
mov [di], ax
```
这行代码的作用是将 AX 寄存器的值存储到 DI 寄存器指向的内存地址中。但是,在实模式下,DI 寄存器是 16 位寄存器,而内存地址是 8 位地址,因此会出现操作数不匹配的错误。
解决这个问题的方法是,将操作数改为 16 位地址,即将 "mov [di], ax" 改为 "mov word [di], ax"。这样就可以将 AX 寄存器的值保存到 DI 寄存器指向的 16 位内存地址中了。
修改后的代码如下:
```
org 7c00h
start:
mov ax, 0b800h
mov es, ax
mov di, 0
mov cx, 18
mov si, name
cld
rep movsb
mov bx, 0
mov di, name
mov cx, 18
calc_sum:
lodsb
add bl, al
loop calc_sum
mov ah, 0
mov al, bl
mov bx, 10
div bx
add al, '0'
mov bh, 0
mov bl, 0x0f
int 10h
mov al, ah
add al, '0'
mov bh, 0
mov bl, 0x0f
int 10h
jmp $
name db 'ZhangYanqing 1204108017'
times 510-($-$$) db 0
dw 0xaa55
```
请注意,以上代码只是修改了一个错误,其他部分仍然保持原样。如果您需要对代码进行其他修改或者调试,请提供更具体的信息。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)