📄 subject_50908.htm
字号:
<p>
序号:50908 发表者:ZGW 发表日期:2003-08-27 18:09:00
<br>主题:请问这是什么语言? 内容是什么?
<br>内容:.DOSSEG<BR>.MODEL SMALL<BR>.STACK 200H<BR>.DATA<BR><BR>MSG DB "THIS IS TRUE", "$"<BR>MSG1 DB "THIS IS QUOTIENT", "$"<BR>MSG2 DB "THIS IS REMAINDER", "$"<BR>.CODE<BR>START:<BR><BR> MOV AX, @DATA<BR> MOV DS, AX<BR><BR><BR><BR> CALL INPUTNUMBER<BR><BR> CALL SQUAREROOT<BR> CALL CHANGELINE<BR> CALL DISPLAYNUMBER<BR><BR> MOV AX, 4C00H<BR> INT 21H<BR><BR><BR>;PASS DIVIDANT, DIVISOR BY STACK<BR>;GET QUOTIENT FROM STACK<BR>QUOTIENT PROC<BR> PUSH BP<BR> MOV BP, SP<BR> PUSH AX<BR> MOV AX, [BP+6]<BR> PUSH AX<BR> MOV AX, [BP+4]<BR> PUSH AX<BR> CALL DIVIDE<BR> POP AX; USELESS REMAINDER, ONLY POP<BR> POP AX; THIS IS QUOTIENT<BR> MOV [BP+6], AX<BR> POP AX; THE ORIGINAL AX SAVED<BR> POP BP<BR> RET 2<BR>QUOTIENT ENDP<BR><BR>;PASS DIVIDANT, DIVISOR BY STACK<BR>;GET MODULOS FROM STACK<BR>MODULE PROC<BR> PUSH BP<BR> MOV BP, SP<BR> PUSH AX<BR> MOV AX, [BP+6]<BR> PUSH AX<BR> MOV AX, [BP+4]<BR> PUSH AX<BR> CALL DIVIDE<BR> POP AX; THIS IS REMAINDER<BR> MOV [BP+6], AX<BR> POP AX; USELESS QUOTIENT, BUT HAVE TO POP OUT TO CLEAR STACK<BR> POP AX; ORIGINAL AX SAVED<BR> POP BP<BR> RET 2<BR>MODULE ENDP<BR><BR><BR><BR>;USE STACK TO PASS DIVIDANT AND DIVISOR<BR>;USE STACK TO RETURN QUOTIENT AND REMAINDER<BR>DIVIDE PROC<BR> PUSH BP<BR> MOV BP, SP<BR> PUSH AX<BR> PUSH BX<BR> PUSH DX<BR><BR> MOV AX, [BP+6]; THE DIVIDANT<BR> MOV BX, [BP+4]; THE DIVISOR<BR> CMP BH, 0; CHECK IF IT IS A 16BIT DIVIDE OR NOT<BR> JNE SIXTEENDIV<BR> CMP AH, 0<BR> JNE SIXTEENDIV<BR>EIGHTDIV:<BR> DIV BL; 8BIT DIV<BR> MOV [BP+6], AL; THE QUOTIENT;<BR> MOV [BP+4], AH; THE REMAINDER<BR> JMP ENDDIV<BR>SIXTEENDIV:<BR> DIV BX ; 16BIT DIV<BR> MOV [BP+6], AX; THE QUOTIENT<BR> MOV [BP+4], DX; THE REMAINDER<BR>ENDDIV:<BR> POP DX<BR> POP BX<BR> POP AX<BR> POP BP<BR> RET<BR>DIVIDE ENDP<BR><BR><BR>CHANGELINE PROC<BR> PUSH AX<BR> PUSH DX<BR> MOV AH, 02<BR> MOV DL, 0DH<BR> INT 21H<BR> MOV DL, 0AH<BR> INT 21H<BR> POP DX<BR> POP AX<BR> RET<BR>CHANGELINE ENDP<BR><BR><BR>DISPLAYNUMBER PROC<BR> PUSH BX<BR> PUSH CX<BR> PUSH DX<BR> MOV BX, 10<BR> MOV CX, 0<BR>BEGINDIVIDE:<BR> CMP AX, 0<BR> JE SHOWRESULT<BR> PUSH AX<BR> PUSH BX<BR> CALL DIVIDE<BR> POP DX<BR> POP AX<BR> INC CX<BR> ADD DX, 30H<BR> PUSH DX<BR> JMP BEGINDIVIDE<BR><BR>SHOWRESULT:<BR> CMP CX, 0<BR> JE ENDDISPLAY<BR>DISPLAYLOOP:<BR> MOV AH, 02H<BR> POP DX<BR> INT 21H<BR> LOOP DISPLAYLOOP<BR>ENDDISPLAY:<BR> POP DX<BR> POP CX<BR> POP BX<BR> RET<BR>DISPLAYNUMBER ENDP<BR><BR><BR>SQUAREROOT PROC<BR> PUSH BX<BR> PUSH CX<BR> PUSH DX<BR> PUSH SI<BR> PUSH DI<BR> MOV CX, 00H<BR> MOV BX, AX; BX SAVE THE NUMBER<BR><BR> CMP BX, 255; THE BIGGEST ROOT OF 16BIT<BR> JG LOCAL1<BR> MOV DI, BX<BR> JMP LOCAL2<BR>LOCAL1:<BR> MOV DI, 255; THIS IS UPPER BOUND OF 16BIT ROOT<BR>LOCAL2:<BR><BR> MOV SI, 1; LOWBOUND<BR><BR>CHECKRESULT:<BR> MOV AX, SI<BR> ADD AX, DI ; AX IS THE SUM OF LOW AND HIGH BOUND<BR> MOV DX, 02H<BR> SHR AX, 1<BR> MOV CX, AX<BR> MUL AX; AX IS THE SQUARE OF CX<BR>COMPARE:<BR> CMP AX, BX<BR> JE FINDRESULT<BR> CMP AX, BX<BR> JB SMALLER<BR><BR>BIGGERR:<BR> DEC CX<BR> CMP CX, SI; COMPARE LOWBOUND<BR> JL FINDRESULT; EXCEED LOW BOUND<BR> MOV DI, CX;NEW HIGH BOUND<BR> JMP NEXT<BR><BR>SMALLER:<BR> INC CX<BR> CMP CX, DI; COMPARE HIGHBOUND<BR> JG FINDRESULT ; EXCEED LOW BOUND<BR> MOV SI, CX; NEW LOW BOUND<BR> JMP NEXT<BR>NEXT:<BR><BR> JMP CHECKRESULT<BR>FINDRESULT:<BR> MOV AX, CX; RESULT IS RETURN IN AX<BR> POP DI<BR> POP SI<BR> POP DX<BR> POP CX<BR> POP BX<BR> RET<BR>SQUAREROOT ENDP<BR><BR><BR>INPUTNUMBER PROC<BR> PUSH BX<BR> PUSH CX<BR> MOV AX, 00H<BR> MOV BX, 00H<BR> MOV CX, 00H<BR><BR>CHECK:<BR> MOV AH, 01H<BR> INT 21H<BR> CMP AL, 0DH<BR> JE ENDINPUT<BR> MOV CL, AL; SAVE INPUT IN CX<BR> MOV AX, 10; PREPARE MUL<BR> MUL BX ; OLD DATA IN BX<BR> SUB CX, 30H; CX TO BE NUBMERS<BR> ADD AX, CX<BR> MOV BX, AX; SAVE DATA IN BX<BR> JMP CHECK<BR><BR>ENDINPUT:<BR> MOV AX, BX; RETURN VALUE IN AX<BR> POP CX<BR> POP BX<BR> RET<BR>INPUTNUMBER ENDP<BR><BR>END START<BR>END<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:爱丽思 回复日期:2003-08-27 20:55:10
<br>内容:这就是x86的汇编语言啊
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -