汇编语言例题详解(一道汇编语言题,望详细解释)
本文目录
一道汇编语言题,望详细解释
你的图片已经上传!
好好学习天天向上!
呵呵,真是不好意思。
ESP=1FFEH ,才对!
真是不好意思了。
ax,bx,cx,这些是16位的汇编寄存器。
EAX,EBX,ECX,是32位的汇编寄存器。我把ax,bx,cx,.....这些当成EAX,EBX......了,汇编来计算时所有入栈、出栈都是加的4。所以才错了。
它们入栈、出栈的占用空间的大小是不一样的。
16位的汇编是2字节,32位的是4字节所以搞错。
把图中的加、减4换成加减2就对了。
当成32位的汇编了,push 一次。ESP-4
在16位汇编中:
push ax sp-2 ;记住入栈-2,也就是分配16位,2个字节的空间,用来存放ax
push bx sp-4
push cx sp-6
pop ax sp-6+2 ax=5566H ; 出栈一次,腾出2字节16位的空间,还给系统,系统回收。
pop cx sp-6+4 cx=3344H
sp=1FFCH
2字节=(16位)/(8位/1字节),即每8位为一个字节
正如注释的那样
ax 是16的寄存器,所以sp-2或+2.EAX是32的寄存器,那么ESP-4或ESP+4
汇编语言题目 求解
MOV AL,DA1 ;56H→AL,AF=0,CF=0ADD AL,DA1+2 ;56H+67H=BDH→AL,AF=0,CF=0DAA ;BDH→23H→AL,AF=1,CF=1MOV DA2,AL ;AL→DA2,AF=1,CF=1MOV AL,DA1+1 ;78H→AL,AF=1,CF=1ADC AL,DA1+3 ;78H+78H+CF=F1H→AL,AF=1,CF=0DAA ;F1H→57H→AL,AF=1,CF=1MOV DA2+1,AL ;AL→DA2+1,AF=1,CF=1(DA2)=23H(DA2+1)=57HCF=1十进制数加调整指令DAA(Decimal Adjust After Addition),该指令用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。调整规则如下:如果AL的低四位大于9,或标志位AF=1,那么,AL=AL+6,并置AF=1;如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1;如果以上两点都不成立,则,清除标志位AF和CF。经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相加,并进行调整后,得到的结果还是压缩型BCD码。指令格式:DAA受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)
汇编语言的一些程序设计题,谁能举例解答一下
你的问题问的不对,寄存机 AX BX CX DX就是具体的数据,你可以把这些当成变量使用a,b,c,d在程序中是分配的内存空间,和寄存器存在着本质上的区别,所以这些题目使用的数据就是:AX,BX,CX,DX这些寄存器数据1、交换可以用堆栈进行,AX。BX相互交换内容PUSH AXPUSH BXPOP AXPOP 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; 所以结果也是0AND 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:,al; dec cx; inc si; // 指向下一个字节 cmp cx,0; jnz _start; // 如果cx不为0事继续清空下一个内存百度【幽灵代码论坛】加入我们一起学习
汇编语言的题目,,希望每一步都解释下
ENTRY DW 3 ;设置ENTRY数据段里有一个数据为3MOV BX ,OFFSET TABLE;把TABLE的地址给BXDW字格式:存入的是1000D,2000D,3000D……十进制,换成16进制就是1E00H第二题:INT 20是中断ax=8D00Hdx没有用到,因为2340H*4在ax中够存,所以dx=0,dx:ax=高八位:低八位(乘积)
更多文章:
synthesia(下载安装一个安卓液晶电视板的synthesia软件要怎么交费解锁)
2024年5月7日 21:55
精品成品网站入口(请推荐个你认为最值得去的网站,比较有特色的那种精品网站!)
2024年6月25日 12:50
spartan浏览器(win10怎么开启spartan浏览器)
2023年5月22日 04:20
nba2k21下载安卓版(在哪里可以下载NBA2k21安卓手机中文版)
2024年6月30日 06:55
轩辕传奇药师弑神技能(轩辕传奇手游弑神有什么用 弑神攻击提升方法解说)
2024年7月3日 19:06
autocad2014注册机在什么位置(CAD2014版安装后怎么激活注册机在哪里找到)
2024年10月11日 11:15