Red de conocimientos turísticos - Conocimientos sobre calendario chino - Utilice programación mixta en ensamblador y C para diseñar el código para completar la función de encontrar el valor máximo de a, b, c. Es necesario escribir código de inicio en ensamblador y código C.

Utilice programación mixta en ensamblador y C para diseñar el código para completar la función de encontrar el valor máximo de a, b, c. Es necesario escribir código de inicio en ensamblador y código C.

; Este programa limita A y B a un máximo de 4 dígitos decimales; este programa está compilado y se ejecuta correctamente CodeSegmentAssumeCS: Código, DS: CodeCRequ000DHLFequ000AHKBBackequ0008H ------------- -------- ------------------------- Función: Mostrar la cadena de la dirección especificada (Str_Addr Entry:; Str_Addr = dirección de cadena (obligatoria en el segmento de datos) Uso: OutputStr_Addr; Ejemplo de uso: OutputPromptStrOutputMACROStr_Addrleadx, Str_Addrmovah, 9int21hEndM -------; -------- ----- --------; Función: Obtener la posición del cursor Entrada: Ninguna Salida: DH=número de fila, DL=número de columna GetCursorProcNearPUSHAXPUSHBXPUSHCXXORBX, BXMOVAH, 3INT10HMOVCursor_Row, DHMOVCursor _Col, DLPOPCXPOPBXPOPAXRETCursor_RowDB?Cursor_ColDB?GetCursorEndP;- ---- - -------------------------------- Función: Establecer la posición del cursor Entrada: Cursor_Row=coordenada de fila; ; Cursor_Col: Coordenadas de columna)SetCursorProcNearPUSHCXPUSHBXPUSHAXMOVDH, Cursor_RowMOVDL, Cursor_ColXORBX, BXMOVAH, 2INT10HPOPAXPOPBXPOPCXRETSetCursorEndP;----------- ----------------------- - ----- Función: Salida de retorno de carro y avance de línea enter_CTLFprocNearpushaxpushdxmovah, 02hmovdl, 0dhint21hmovdl, 0ahint21hpopdxpopaxretenter_CTLFendp -----------; --------------- -- ----------- Función: Generar un carácter Entrada: dl=Carácter a mostrar enter_ChrprocNearpushaxmovah, 02hint21hpopaxretenter_Chrendp; -------- - ------------------------- Función: ingresa un número decimal de N dígitos en el teclado; usa la lógica y cambia las instrucciones para convertirlo en un; número binario y guárdelo en la unidad de memoria especificada.

; Entrada: N = número de dígitos; di = guarda la primera dirección del número ingresado. Salida: el número binario convertido se guarda en la unidad señalada por di Input_DigitProcNearpushdxpushcxpushbxpushdileadi, @@Save_Tmppushdicldmovcx, Npushcx@@Input: callGetCursor; posición movah, 1; acepta un carácter int21hcmpal del teclado, CR si escribe un retorno de carro, el número que se ha escrito es inferior a N dígitos jz@@ASC_Dec transfiere para procesar el número que se ha escrito cmpal, KBBackjz; @@KB_Back; si es una clave en blanco de retorno, reinicie Ingrese cmpal, '0'jb@@KBBack; si es menor que el número '0', vuelva a ingresar cmpal, '9'ja@@KBBack; es inferior al número '9', vuelva a ingresar jmp@@Save_Dig@@KB_Back: decCursor_Colinccxdecdi @@KBBack: callSetCursor; establezca la posición del cursor jmp@@Input@@Save_Dig: andal, 0fh; convierta a número binario stosb; @@Input; acepta el siguiente número @@ASC_Dec: movax, cxpopcxpopsisubcx, ax; entrada real Dígitos en un número binario jcxz@@One_Digit; si el número ingresado tiene solo un dígito, vaya a guardar directamente el número binario movbx, 10; @@Mul_Ten: lodsbcbwaddax, bpmulbxmovbp, axloop@@Mul_Ten@@One_Digit: lodsbcbwaddax, bp@@Save_Ret: popdistoswpopbxpopcxpopdxret @@Save_Tmpdb16dup(?)Input_DigitEndP;—————————————————— ------------------------------------------------; Función : Convierte el número binario sin signo en AX en código ASCII decimal explícito y envíalo a la pantalla para su visualización Entrada: AX=número binario Salir: muestra el número de código ASCII convertido en la posición actual del cursor Dec_ASCIIProcNearpushdxpushbxpushdimovbx, 10leadi, @ @Temp_Save; [6]movbyteptr[di],'$'decdicld@@Divide:xordx,dxdivbxordl,30hmov[di],dldecditestax,0ffffhjnz@@Divideincdipushdipopdxmovah,9int21hpopdipopbxpopdxret@@Temp_Savedb7dup(?)@@Carry_Yesdb' 'Dec _ASCIIEndP;-- - -------------------------------------------------- -Nequ4; Número de dígitos enteros decimales ingresados ​​Número1dw?Número2dw ?prompt_Onedb'Por favor el primer número: $'prompt_Twodb'Por favor el segundo número: $'Inicio: pushcspopdspushcspopes Haga que el segmento de datos, el segmento adicional y el segmento de código sean el mismo segmento; ------------- -

-----------------------; Ingrese dos números decimales Outputprompt_One; Solicite ingresar el primer número leadi, Número1 La dirección de la variable Número1 callInput_Digit; -número de dígitos del teclado callenter_CTLF; genera un retorno de carro y un avance de línea Outputprompt_Two; solicita ingresar el primer número leadi, Number2; la dirección de la variable Number1 callInput_Digit; return y un avance de línea callenter_CTLF; genera un retorno de carro y un avance de línea -------- Los números binarios con y sin signo se convierten en códigos ASCII decimales explícitos y se envían a la pantalla para mostrar movdl, ' ' callenter_Chr; muestra un signo más movax, Number2callDec_ASCII; muestra el segundo número movdl, '=' callenter_Chr; muestra un signo igual movax, Number1addax, Number2 Number2→AXcallDec_ASCII; 4ch; finalizar el programa int21hCodeENDSENDStart; la compilación finaliza aquí