首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TASM寄存器?

TASM寄存器?
EN

Stack Overflow用户
提问于 2013-03-14 10:18:34
回答 2查看 2.5K关注 0票数 0

我对寄存器在TASM或汇编中的工作原理感到非常困惑。特别是在它内部赋值整数值的时候。我真的找不到一个清晰的教程。

有人能给我解释一下这些寄存器的用法吗:

代码语言:javascript
复制
AX, BX, CX, DX,

AH AL, BL BH, CL CH, DL DH

我看到一个使用CX进行循环计数器的程序。我还可以同时使用它作为某个整数值的主机吗?

老实说,我脑海中有很多问题。我甚至不知道如何在x86中执行加减运算

我们的教授真的没有给我们任何参考。我们甚至没有学过如何在汇编中执行数学运算。在讲座中,我们只得到简要解释的代码(比如代码是如何工作的,而没有解释每一行是做什么的)。我们在活动中所做的就是复制和粘贴他的代码,然后漫无目的地修改它。

是的,他给出了一份我们还不了解的作业。

很抱歉在这里大喊大叫。

更新:我想创建一个嵌套循环,下面是一个伪代码。

代码语言:javascript
复制
; for (CX = 6; CX != 0; CX--) { // PSEUDO CODE, 
    ; for (BL = 0; BL != 7-CX; BL++) { 
        ; putchar(M+BL);
    ; }
    ; M--;
    ; putchar(10);
    ; putchar(13);
; }

我一直在尝试在我的寄存器中设置值时遇到麻烦,因为我不知道它们是如何工作的。请给我解释一下我做错了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-14 14:54:41

你没有在这里初始化BL。您需要在内部循环之前将其设置为0

INNER:

MOV DL, M

INT 21H

应该删除此代码,因为它将打印字符7-CL (这是“垃圾”)。

MOV DL, AL

INT 21H

在前面的循环中已经有了一个有条件的退出,所以这个应该是一个无条件的跳转。

JNE INNER

票数 1
EN

Stack Overflow用户

发布于 2013-03-14 10:28:45

请尝试此链接:x86 Assembly Reference Sheet

在没有更具体的问题的情况下,这里有一些基础知识。对不起,没有链接到教程,这是从内存中,如果你有任何具体的问题,让我知道,并将更新

代码语言:javascript
复制
; 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位值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15400028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档