我可以在汇编中对不同的位(8位,16位)进行求和吗?
例如;
sums proc near
mov ax,0280h
mov bh,30h
mov ch,20h
adc ax,bh
adc ax,ch
ret
sums endp
此代码出错; “操作类型不匹配”
答案 0 :(得分:3)
不确定。只需将8位值加载到寄存器中,然后对其进行符号扩展或零扩展。然后添加。
答案 1 :(得分:1)
当然。
mov ax,33h
mov cx,1133h
add ax,cx
答案 2 :(得分:1)
这是一个黑暗的镜头,如果我错了,请纠正我(NASM - AT& T语法)
.section .text
.globl _start
_start:
movl $0, %eax
mov $0x280, %ax
movl $0, %ebx
movl $0, %ecx
mov $0x30, %bh
mov $0x20, %ch
add %bx, %ax
add %cx, %ax
movl %eax, %ebx # store the result in %ebx
movl $1, %eax # syscall for exit()
int $0x80
如果您使用的是Linux,请在控制台上运行此应用程序后执行:
echo $?
打印应用程序的返回代码,这实际上是我们之前所做的总和(并存储在%ebx
中)。
答案 3 :(得分:0)
更改
mov bh,30h
mov ch,20h
adc ax,bh
adc ax,ch
到
mov bx,30h
mov cx,20h
adc ax,bx
adc ax,cx