汇编语言的一些程序设计题,谁能举例解答一下

发布网友

我来回答

1个回答

热心网友

你的问题问的不对,寄存机 AX BX CX DX就是具体的数据,你可以把这些当成变量使用
a,b,c,d在程序中是分配的内存空间,和寄存器存在着本质上的区别,所以这些题目使用的数据就是:AX,BX,CX,DX这些寄存器数据

1、交换可以用堆栈进行,
AX。BX相互交换内容

PUSH AX
PUSH BX
POP AX
POP BX
这样AX和BX内容就交换了

2、
为了方便你理解,写一些不正确的表达式吧
MOV AX,0 相当于 int a=0;
XOR AX,AX XOR这个指令,如果后面两个数相同,则为0,并将0存放到第一个寄存器AX中
SUB AX,AX 相当于 int a=1; a=a-a; 所以结果也是0
AND AX,0 AND指令,将后面两个数据按位‘与’操作,只要有一个数为0,结果就为0,所以AX的结果就是0了。

第三题看不懂什么意思,想问什么东西?

4、
内存复制的代码:
mov si,offset setscreen;原数据偏移地址
mov di,0 ;目标偏移地址
mov cx,offset setscreen_end-offset setscreen ;计算出数据长度
cld ;di,si每次执行movsb的时候都递增1
rep movsb ;开始复制

清零:
如果数据段有一块内存需要清零
mov cx,100; // 数据段长度
mov si,0; // 开始地址
mov al,0;
_start:
mov byte ptr ds:[si],al;
dec cx;
inc si; // 指向下一个字节
cmp cx,0;
jnz _start; // 如果cx不为0事继续清空下一个内存

百度【幽灵代码论坛】加入我们一起学习

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com