8088CPU的指令系统详解
话题:0CPU的 指令系统详解
回答:一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先扩展,再传送. PUSH 把字压入堆栈. POP 把字 出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次 出堆栈. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次 出堆栈. BSWAP 32位寄存器里字节的顺序 XCHG 字或字节.( 至少有一个 作数为寄存器,段
参考回答:06/0CPU的 指令系统按照功能可以分为六类: 数据传输类 算术运算类 逻辑运算与移位类 字符串处理类 控制转移类 处理器控制类
话题:汇编语言:十个压缩BCD数 相加,求大神
问题详情:如题,完全不懂……
回答:呵呵 十个压缩BCD数 相加 的基本算法:1 采用一个循环结构,一次加位(即2位压缩BCD数) 共需要循环相加5次 既可以完成十个压缩BCD数 相加。 使用3个指针,一个指向被加数,一个指向加数,一个指向和2 使用带进位的 加法 指令 即 ADC 指令 每次加完后 要进行十进制调整 即使用DA A指令 修改3个指针,指向下一个数据。3 循环次数减1,不等于0,继续循环,否则结束。 楼上的使用单片机汇编指令时不行的,人家需要的是06CPU的。 嘿嘿 满意就给加分哦 具体指导 可以见
参考回答:BCDA: MOV R2,#10 ;10数 MOV R0,#30H ;假设10个数存在30H~3H中 MOV R3,#0 ;和存在R3R4中,这里清0 MOV R4,#0 CLR
话题:汇编程序:一个字的 压缩BCD码加、减法
问题详情:1.什么是 一个字的 压缩BCD码加,减法?2.完整的程序3.程序最好
回答:压缩型BCD码是一个字节存放二个 BCD码,低四位和高四位都是一个 BCD码。一个字的 压缩BCD码,就是4个压缩BCD码。两个字节压缩BCD码的加、减运算后,要用对应的 调整指令调整AL的值;两个字压缩BCD码的加、减运算,不仅要用对应的 调整指令调整AL的值,还要考虑进位或借位的问题。如,645H+23H=H,涉及到低字节向高字节进位的问题645H-23H=4356H,涉及到低字节向高字节借位的问题不用调整指令 的完整程序:; 本程序在MA Plus 1.2集成环境下通过编译,经过调试,运行正确。Code Segment Assume CS:Code,DS:Code; -------------------------------------; 功能:显示指定 (Str_Addr)的字符串;
参考回答:使用什么CPU?
话题:十进制调整指令DAA 的功能以及调整过程是什么?
问题详情:重点突出功能和过程这两个词,希望条理清晰。
回答:举个例子好过废话连篇:两个压缩 的 BCD数 相加,如15H + 16H,结果为2BH,执行daa后,结果变为31H(就好像执行了一次10进制加法一样)。压缩的BCD,意思是用4位来表示一个10进制数(0-),这样一个字节就可以放两个压缩 的 BCD数。daa,具体含义是把al中的和调整为压缩的bcd格式,之前必须执行add或adc指令。而这加法 指令必须把两个压缩 的 bcd数 相加,把结果存放到al中。又如10H + 0FH,这样的不是标准的 BCD数 相加,使用daa后,还是按照daa 的 调整方式得到25H。
话题:51单片机汇编语言的一个小问题
问题详情:十进制数调整,在进行BCD码运算时,本指令总是跟在ADD或
回答:就是对两位压缩BCD码进行调整 r1=1h a=2hadd a,r1 显然 a=3fh但是 这不是我们想要的结果,因为我们用一个字节表示的是压缩的BCD码,而bcd码根据421的标准码是么有f这个数字的,虽然里面存的数据是1h和2h但是我们把他看成是bcd码,也就是说用4位数字表示一个数,1h+2h=45h我们希望得到的是这个结果,所以有了da a这是根据cy ac进位做出的自动调整指令,有关详细情况可以用数学方法解释,楼主有兴趣可以直接 一下。总之,调整以后原来的3fh变成了45h
参考回答:这条指令跟在加法 指令(ADD、ADDC)指令后,对累加器A中位结果进行调整,使它调整为压缩 的 BCD码表示的数,以完成十进制
话题:bcd码与ascii码之间的转化
回答:计算机内毫无例外地都使用二进制数进行运算,但通常采用进制和十六进制的形式读写。对于计算机技术 专业人员,要理解这些数的含义是没问题,但对非专业人员却不那么容易的。由于日常生活中,人们最熟 悉的数制是十进制,因此专门 定了一种二进制的十进制码,称为BCD码,它是一种以二进制表示的十进 制数码。 一、421BCD码 二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合 十进 制数的0,1,2,3,4,5,6 ,,, 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种 作为 码,分别 十进制中的0,1,2,3,4,5,6,,, 这十个数符。最常用的 BCD码称为421BCD 码,.4
话题:0X6汇编语言,编写一条程序实 意两个五位数相加并显
问题详情:对于5+之类的 个位数相加,进 不涉及高深的 指令。结果显示也
回答:;12345+60=0235 计算并全部显示出来. ;---------------------------------------------- DATAS SEGMENT X DB 1, 2, 3, 4, 5 ;存放5位十进制数. Y DB 6, , , , 0 ;都是非压缩 的 BCD码. Z DB 6 DUP(?) ;6位数的和. DATAS ENDS ;---------------------------------------------- CODES SEGMENT ASSUME CS:CODES, DS:DATAS START: MOV AX, DATAS MOV DS, AX MOV SI, 0 MOV CX, 5 ;计划循环5次. K1: MOV DL, X[SI] ;取出一位X ADD DL, 30H ;变成ASCII码. MOV AH, 2 ;显示在屏幕. INT 21H INC SI ;指向下一位. LOOP K1 MOV DL, '+' ;显示加号. MOV AH, 2 INT 21H MOV SI, 0 MOV CX, 5 K2: MOV DL, Y[SI] ADD DL, 30H MOV AH, 2 ;显示5位
话题:高分跪求汇编语言位(4字节)压缩BCD码加、减法程序!
问题详情:程序要完整,注释请务必详细。在此先行谢过,一经采纳,还有加
回答:; 本程序通过编译,运行正确Code Segment Assume CS:Code,DS:CodeBCD_1 db 56h,23h,62h,1hBCD_2 db 3h,6h,2h,4hBCD_Add db 4 dup(?) ;预留相加结果存储单元BCD_Sub db 4 dup(?) ;预留相减结果存储单元Start: push cs pop ds ;使数据段与 码段同段 push cs pop es ;使附加段与 码段同段; -------------------------------------; 压缩BCD码加法 mov si,3 ;数组下标初值 lea di,BCD_Add[3] ;相加结果存储单元起始 mov cx,4 ;4字节 std clc ;清进位标志##Add: mov al,BCD_1[si] ;读取1位被加数 adc al,BCD_2[si] ;带进位加法 daa ;十进制数加调整指令DAA(Decimal Adjust After Addition) stosb ;保存相加结果
话题:单片机中PSW的疑问
问题详情:PSW中的AC辅助进/借位标志,书上说用于十进制调整,当D3向D
回答:十进制调整DA A 用于调整累加器内BCD 的内容 两个压缩型BCD数按二进制数相加后,必须经本指令(DA A )调整后才能得到压缩型BCD数 的和的正确值。 +++++++++++++++++++++++++++++++++++具体 作就是:若累加器A高4位的值大于或进位位CY=1,则高4位必须加6调整,以产生高4位的正确BCD数值。 同样,在加6调整后产生最高进位,则置位CY;反之不清除CY。 +++++++++++++++++++++++++++++++++++举个例子:设累加器A内容为01010110B(即为56的 BCD数),寄存器R3内容为01100111B(6的 BCD数),CY内容为1。执行下列指令:ADDC A,R3DA A第一条指令是执行带进位的纯二进制数加法,相加后累加器A的
参考回答:AC辅助进/借位标志,去我用例子说明可能更方便些。1010 1100B + 0100 1000B=1111 0000B注意到没有,D3向D4有进位,此时,
话题:微机原理高手 :数字的ASCII码与未组合的 BCD码?
问题详情:4.DAA:该指令只能对≤的 两个 BCD码相加,才能进行调整。这
回答:1.我不知道楼主用的是什麽教材,那句话前面是不是还有个例子什麽的?关於BCD码,其实就是把一串二进制数4位4位地拆开来,然后对应这四位数写出响应的十六进制数(不用担心,肯定不会超过F),然后再把这些个十六进制连起来,看看对应这个十六进制的是哪个字(ASCII码是十六进制的)。 :(0100 0001)BCD,对应的就是41H,而41H在ASCII码中是A,所以你题目中的数字3转换成BCD码那题就好理解了吧。 2.那些是对非压缩BCD码的 调整指令,一般是跟在ADD SUB MUL 一类算数指令后的,可以理解为用来解决因为用非压缩的BCD计算出错的问题的。 3.AAA(在二进制加法指令ADD之后使用) 是将AL中的 两个非压
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-

















































