我对寄存器在TASM或汇编中的工作原理感到非常困惑。特别是在它内部赋值整数值的时候。我真的找不到一个清晰的教程。
有人能给我解释一下这些寄存器的用法吗:
AX, BX, CX, DX,
AH AL, BL BH, CL CH, DL DH我看到一个使用CX进行循环计数器的程序。我还可以同时使用它作为某个整数值的主机吗?
老实说,我脑海中有很多问题。我甚至不知道如何在x86中执行加减运算
我们的教授真的没有给我们任何参考。我们甚至没有学过如何在汇编中执行数学运算。在讲座中,我们只得到简要解释的代码(比如代码是如何工作的,而没有解释每一行是做什么的)。我们在活动中所做的就是复制和粘贴他的代码,然后漫无目的地修改它。
是的,他给出了一份我们还不了解的作业。
很抱歉在这里大喊大叫。
更新:我想创建一个嵌套循环,下面是一个伪代码。
; for (CX = 6; CX != 0; CX--) { // PSEUDO CODE,
; for (BL = 0; BL != 7-CX; BL++) {
; putchar(M+BL);
; }
; M--;
; putchar(10);
; putchar(13);
; }我一直在尝试在我的寄存器中设置值时遇到麻烦,因为我不知道它们是如何工作的。请给我解释一下我做错了什么。
发布于 2013-03-14 14:54:41
你没有在这里初始化BL。您需要在内部循环之前将其设置为0
INNER:
MOV DL, M
INT 21H
应该删除此代码,因为它将打印字符7-CL (这是“垃圾”)。
MOV DL, AL
INT 21H
在前面的循环中已经有了一个有条件的退出,所以这个应该是一个无条件的跳转。
JNE INNER
发布于 2013-03-14 10:28:45
请尝试此链接:x86 Assembly Reference Sheet
在没有更具体的问题的情况下,这里有一些基础知识。对不起,没有链接到教程,这是从内存中,如果你有任何具体的问题,让我知道,并将更新
; assign 100 to ax (16 bit)
mov ax, 100
; add ax to bx
add bx,ax
; add to ax, memory refereced by dx
add ax,[dx]
; add 8 bit 100 to al
add al, 100啊,al,bl等保存8位值
ax、bx、cx等保存16位值
eax、ebx等保存32位值
https://stackoverflow.com/questions/15400028
复制相似问题