8086汇编语言程序设计,关于CMP指令比较数字是否存在的问题 10C

如何在数码管中显示0-FFFF中带0的数,一直循环,每秒状态切换。我目前的思路就是用cmp指令比较,要是没有0,就右移,循环四次,四次之后没有0的话,就跳到下一个数字继续循环比较。但是汇编的基础太差,求各位大神帮忙或者提出更好的方法。以下是我们现在存有的汇编程序
DATA SEGMENT

; DB 0 1 2 3 4 5 6 7 8 9 A B C D E F
LEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV DX,0206H
MOV AL,80H
OUT DX,AL
LEA BX,LEDCODE
XOR SI,SI
AGAIN:

MOV DI,1
LP2:

MOV AX,DI ; PORT B
MOV DX,0202H
OUT DX,AL

    MOV AX,SI
    AND AX,0FH
    XLAT
    MOV DX,0200H    ; PORT A
    OUT DX,AL

    PUSH CX
    MOV CX,1000
    LOOP $
    POP CX      

    MOV CL,4
    ROR SI,CL       ;SI RIGHT SHIFT 4
    ROL DI,1        ; PBx
    CMP DI,16
    JNE LP2     
    INC SI
    JMP AGAIN

CODE ENDS

END START

2个回答

你用C程序编译, 然后反编译成汇编即可, 这是最简单的。

sinat_38603242
sinat_38603242 关键是我C语言也不会啊
一年多之前 回复

C 语言很简单啊, 几条语句就搞定了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
8086汇编语言程序设计
8086汇编语言程序设计,各种寻址方式讲得很清楚,可作为电子书随时查阅
刘帅嵌入式系统-CMP比较指令
CMP指令从寄存器Rn中减去< shifter_operand > 表示的数值,根据操作的结果更新CPSR中相应的条件标志位,后面的指令就可以根据CPSR中相应的条件标志位来判断是否执行了。 指令的编码格式 指令的语法格式 CMP{< cond >} {S} < Rd >, < Rn> ,< shifter_operand &gt...
IBM PC 8086汇编语言程序设计
IBM PC 8086汇编语言程序设计 沈美明 温东婵 张策红 编著
8086汇编语言程序设计笔记
本文档是在个人学习汇编语言时做的笔记,再加上从网络中搜集来的其他课件、电子书的基础上综合而成,内容设计汇编语言的多个方面,但由于笔记性质,其中只有相关知识的要点,没有详细的举例。对于学过汇编语言的朋友,这份文档可以为您的回顾提供一个大纲,对于没有学过汇编的朋友,这份文档对您的学习也是一个不错的参考。各位下载的朋友可以不断增删内容,以制作成符合您要求的参考文档。 由于本人在汇编语言方面也是在不断学习中,本人不保证本文档中的所有内容都是正确的,若有错误请自己改正。 若有侵权,请联系本人,本人即刻删除。本人邮箱:wzc_email@126.com。 本Word文档包含以下附录: 附录一 DEBUG使用详解 附录二 ASSII码表 附录三 BIOS功能调用 附录四 DOS功能调用 附录五 8086宏汇编常用伪指令表 附录六 8086指令系统 附录七 8086指令对标志位的影响
8086汇编语言程序设计(高清)
8086汇编语言程序设计。。。。。。。。。。。。。。。。。
8086汇编语言程序设计.part2
系统讲述了汇编语言程序设计的内容<br>共分3个压缩包
8086汇编语言程序设计-成绩排名
程序内附详细注释 基本说明:键盘输入五个人学号和成绩,程序运行后显示名次,分数与学号。
8086汇编语言程序设计的基本知识
8086汇编语言程序设计的基本知识,本章将在介绍汇编语言源程序结构的基础上,介绍汇编语言的基本语法成分、常用的伪指 令,并对程序设计方法给出提示。
8086汇编语言程序设计教程
关于8086汇编语言程序设计的教程pdf,详细介绍了8086汇编语言程序设计的理论
8086汇编语言程序设计实验指导书
8086汇编语言程序设计实验指导书8086汇编语言程序设计实验指导书8086汇编语言程序设计实验指导书8086汇编语言程序设计实验指导书
8086汇编语言程序设计教程.pdf
汇编程序设计
8086汇编语言程序设计课件
详细的讲解和介绍了汇编语言的指令、编程。初学者使用
8086汇编语言程序设计.pdf
一本入门汇编语言的经典书籍,详细讲述了一个基本的汇编语法和应用
8086汇编语言程序设计.part3
系统讲述汇编语言程序设计内容<br>共分3个压缩包
8086汇编语言程序设计计算器
8086汇编语言程序设计计
8086汇编语言程序设计课程笔记
北京理工大学cpu汇编语言程序设计课程笔记,可作为入门教程。
8086汇编语言程序设计.PDF
8086汇编语言程序设计 还算可以的教程
8086汇编语言程序设计.part1
系统讲述了汇编语言程序设计的内容<br>共分3个压缩包
8086汇编语言程序设计-加法计算
程序内附详细注释 基本说明:从键盘输入任意位长(不大于10位)十进制数相加,可以屏蔽字符(除+与=外)。
8086汇编语言程序设计答案
8086汇编语言程序设计答案与实验指导,覆盖习题全面详细
8086汇编语言程序设计第一章课件
8086汇编语言程序设计 沈美明 温冬婵 编著 清华大学出版社 课件 第一章
8086汇编DIV指令
王爽《汇编语言》上说:除数为8位,则AL存储商,AH存储余数,除数为16位则AX存储商,DX存储余数。为什么我在DEBUG里调试如下程序却发现商一直存储AX、余数存储于DXrn[code=Assembly]rnmov ax, 1235rnmov bx, 2rndiv bxrnmov ax, 123rndiv bxrn[/code]
8086汇编下的div指令
首先我们需要去了解的是div是除法指令,除数有8位和16位两种,被除数默认是放在AX或者DX和AX当中,如果除数为8位,被除数则为16位默认是放在AX当中的,如果除数为16位,被除数就为32位是在DX和AX当中存放,DX存放的是高16位,AX存放的是低16位。 如果除数是8位的话,那么AL存储的是除法完成之后的商,AH存储的是余数,如果除数为16位,那么AX存储的是除法操作的商,DX存...
8086汇编LEA指令总结
1、格式:LEA OPRD1,OPRD2  (本指令对标志位无影响)OPRD1 为目的操作数,可为任意一个16位的通用寄存器.除段寄存器外OPRD2 为源操作数,可为变量名、标号或地址表达式.除立即数外。2、示例:LEA BX,DATA1LEA DX,BETA[BX+SI]LEA BX BX,[BP],[DI]3、操作数长度和地址长度不同时操作数长(16)小于地址长(32),取低16位存目的寄存器...
8086汇编基本指令
8086汇编的基本指令格式及功能,有助于刚开始学习汇编语言的同学快速上手。
关于cmp指令对标志位的影响的问题.
AL和VAR字节单元中分别存放一个带符号数,执行CMP AL,VAR时,如AL》VAR,那么溢出位和符号位的关系是( ) rnA、OF=SF rnB、OF!=SF rnC、OF=SF=1 rnD、OF=SF=0 rnrn对各指令对标志位的影响还是很迷糊.谁能给个详细的解释,谢谢了.
比较CMP问题
以下是代码,使用第三行的注释为CPUID命令执行以后各寄存器的值,执行CPUID后,我将EAX的值赋为EDX的值后,执行比较命令,但是,每次比较结果都是不相等,直接跳转到了noequ执行输出语句。我明明是按照EDX的值为EAX赋的值,为什么比较结果是不相等呢?rnrn[code=Assembly]rnmov eax,00000001hrncpuidrnmov eax,0BFEBFBFFh ;eax=00000F41 ebx=00010800 ecx=0000441d edx=BFEBFBFF rncmp eax,edxrnjne noequrnmov ax,BootMessagerncall DispStrrnjmp yesequrnnoequ:mov ax,woqurncall DispStrrnyesequ:mov ax,0 rn[/code]
汇编 sub减法指令 比较指令CMP JZ条件跳转指令
SUB指令 减法指令SUB (SUBtract) 格式: SUB A,B //A=A-B; 功能: 两个操作数的相减, 即从A中减去B, 其结果放在A中. CMP 和JZ 指令 比较指令CMP 格式: CMP A,B // A-B; 功能: 两个操作数的相减,即从A中减去B,其结果会影响标志位, 对标志位的影响与SUB指令相同。 本条指令主要是用于配合条件转移指令使用。如J...
8086汇编 字符串数字转数字
首先 在学习8086汇编语言过程中会发现,8086汇编语言不能直接输入数字,只能输入字符串或字符。因为在8086汇编中,所有字符都是以ASCII值形式存储得。就好比C语言中的char 数据类型,然而事实上8086汇编中只有char类型,并没有像C语言int类型或者float类型。所以输入数字必须将输入的字符串转换数字,储存在通用寄存器中或者主存中。这里暂且说说如何将输入的整数字符串转换为整数...
汇编 test指令和cmp指令
test指令将两个操作数进行逻辑与运算,并根据运算结果设置相关的标志位。test命令的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃。影响的标志位CF,ZF,OF,SF,PFcmp指令比较指令。cmp的功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。影响的标志位CF,ZF,OF
8086汇编语言程序设计实验指导书.pdf
汇编实验的环境及操作步骤,步骤很详细,主要是在DEBUG环境下运行
8086汇编语言程序设计— 手机界面模拟
8086汇编语言程序设计— 手机界面模拟,里面是全代码。
求助:cmp指令
[asm]rn;如何判断有符号数的大小rnrndata segmentrndb -2rndata endsrnrnassume cs:code,ds:datarnrncode segmentrnstart: mov ax,datarn mov ds,axrn mov bx,0rn mov ax,[bx]rn rn cmp ax,0 rn jge middle rn mov dx,2rn imul dxrn jmp nextrn rnmiddle:cmp ax,10rn ja largern mov dx,3rn imul dxrn jmp nextrnrnlarge: mov dx,4rn imul dxrn jmp nextrn rnnext: mov ax,4c00hrn int 21hrn rncode endsrnend startrnrn[/asm]rnrn在degug窗口下 看到将-2传送到ax之后显示的是00FE 之后用cmp指令配合jge指令 进行的是有符号数的比较 rn为什么还是会跳转到middle呢?
170419 汇编-cmp指令
1625-5 王子昂 总结《2017年4月19日》 【连续第200天总结】 A. 汇编语言 十一章 B. cmp指令是比较指令,相当于减法,但不保存结果 它执行后对标准寄存器产生影响,其他相关指令通过读取flag来得知结果 eg: cmp ax,ax 结果:zf=1,pf=1,sf=0,cf=0,of=0 对cmp ax,bx 若ax=bx,则zf=1 若ax!=bx,则zf=
《汇编语言(第三版)》cmp指令
cmp指令 本质 cmp是比较指令,cmp的功能相当于减法。 格式 cmp 操作对象1,操作对象2 功能 计算操作对象1-操作对象2,但并不保存结果,可以根据flag标志寄存器来判断结果。 正向判断 如果(ax) = (bx) 则(ax)-(bx) = 0,所以:zf=1。 如果(ax) != (bx) 则(ax)-(bx) != 0,所以:zf=0。
汇编cmp指令
cmp是比较指令,cmp的功能相当于减法指令(sub)。它不保存结果,只是影响相应的标志位。其他的指令通过识别这些被影响的标志位来得知比较结果。      cmp指令格式:   cmp   操作对象1, 操作对象2      注意是计算 操作对象2 - 操作对象1,和sub的一样,而不是 操作数1-操作数2(ATT格式), 但不保存结果,只是根据结果修改相应的标志位。 附我自己写的测
arm cmp指令
指令类 arm 开发 CMP指令用于把 一个寄存器的内容和另一个寄存器的内容或立即数进行比较
关于sse的比较指令
[size=24px]unsigned int i;rn想利用sse指令判断rn i是不是在[x4,x3,x2,x1]这四个数里面。就是i是否和其中某一个相等。rn请问这个用sse指令如何能实现呢~rn[x4,x3,x2,x1]又如何定义成unsigned int类型呢rn[/size]
位图查询海量数字是否存在问题
NULL 博文链接:https://709002341.iteye.com/blog/2257708
关于查询表是否存在的问题
假设某用户表为'UserTable'rn在论坛里看到有人建议这样实现查找该表是否存在rnSELECT *rnFROM sysobjectsrnWHERE (OBJECTPROPERTY(id, N'IsUserTable ') = 1) AND (id = OBJECT_ID(N'UserTable'))rn对这条语句有几个疑问:rn1、N的作用是什么?不加N好像结果是一样的rn2、为什么一定要用表的id呢,如果这样写有什么不对的么?rnSELECT *rnFROM sysobjectsrnWHERE (Name='UserTable')rnrn谢谢!rn
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview