汇编语言与微机原理题 这程序很简单的,最好是自己掌握。我也是刚学的 哈哈。STACK SEGMENT STACKDB 256 DUP?STACK ENDSDATA SEGMENTINPUT DB 'Input the your number:$'FINISH DB 13,10,'$'OUTPUT1 DB 'Output the number:$'ERROR DB 'ERROR$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKERROR1 PROC;报错MOV DX,OFFSET FINISH;屏幕显示换行MOV AH,9INT 21HMOV DX,OFFSET ERROR;屏幕显示errorMOV AH,9INT 21HJMP DONERETERROR1 ENDPSTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INPUT;显示输入第一个数的提示信息MOV AH,9INT 21HMOV BX,0;读数 或者可以说是输入数地下自己看 应该可以动LOOP1:MOV AH,1INT 21HCMP AL,0DH;师傅是回车JZ NEXT1;回车则跳转CMP AL,040H;是否大于FJA NEXT2;大于则跳转SUB AL,30H;是否小于0JB NEXT2;小于则跳转MOV AH,0XCHG AX,BXMOV CX,16DMUL CXADD BX,AXJMP LOOP1NEXT2:CALL ERROR1;call指令NEXT1:MOV DX,OFFSET FINISH;屏幕显示换行MOV AH,9INT 21HMOV DX,OFFSET OUTPUT1;屏幕显示换行MOV AH,9INT 21HMOV AX,BX;转换成二进制输出MOV CX,16BIN:SHL AX,1;左移一位JNC NEXTMOV DL,31H;若进位为1,。
微机原理与汇编语言 JMP START 就是一个死循环呗,跳转到START那句,为的是可以多次读取开关的状态。你要是想让这个程序执行一次就退出当然也可以跳转到别的地方,但是你没有定义STOP,就没办法JMP了.我估计你是不是把START这个标号理解成别的什么东西了,在这里START就是个标号,代表那句“MOV DX,01F2H”的地址,没有什么别的意思,并不是你所理解的\"程序开始\".程序写的肯定不对,问题很大,没有原题没法改,最起码你第一次IN之后得把AL保存一下吧,或者每次TEST AL之前重新IN一下,要不AL都让你给改了,你TEST它有什么用啊?之所以说没有原题没法改是因为如下原因:一 不知道开关Ki闭合对应的是0还是1,你的程序把我搞糊涂了.二 不知道你所谓的\"其他情况,不做任何处理\"是 真的什么都不做 还是 让二极管全都不发光三 假设开关闭合为1,那如果开关状态是11111010的话,我是应该让高四位的二极管发光呢还是什么都不做呢?按照我对题目的理解好像应该是让高四位发光,如果这样的话,楼上 zsq0325 同学的程序就有问题了,用CMP是不行的.
微机原理与汇编语言习题 XOR DX,DX;计数器清0MOV CX,99;循环初值L1:MOV AX,CX;被除数MOV BL,3;除数DIV BLCMP AH,0;余数为0吗?JNZ L2INC DL;余数为0时,计数器加1L2:LOOP L1;循环MOV AL,DL;按要求,将计数器的值存入AL