我是Assembly的新手,我需要转换此C代码:
rowScreen=((indexMat/10)*2)+7;
colScreen=((indexMat%10)*4)+7;
gotoxyP1()
想法是修改这两个全局变量,但我不了解DIV操作的工作原理,这是我现在的例程:
posCurScreenP1:
push rbp
mov rbp, rsp
push rax
push rbx
mov al, [indexMat]
mov bl,10
idiv bl
; ... something needs to go here
call gotoxyP1
pop rbx
pop rax
mov rsp, rbp
pop rbp
ret
是否有任何显示DIV / IDIV简单操作的帮助/教程?谢谢!
push r8
push r9
mov r8, 7
mov r9, 10
mov ax, [indexMat]
mov bl,10
div bl
mov [rowScreen], al ;rowScreen = (indexMat/10)
mov [colScreen], ah ;colScreen = (indexMat%10)
mov bl,2
mul bl
mov [rowScreen], ax ;rowScreen = (indexMat/10)*2
add [rowScreen], r8 ; rowScreen = (indexMat/10)*2 +7
mov al, [colScreen]
mov bl, 4
mul bl
mov [colScreen], ax
add [colScreen], r9
...
也许它不是最佳选择,但我认为它是可行的。