⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u.asm

📁 操作系统实验教程核心技术与编程实例书中地例子代码
💻 ASM
字号:
.MODEL HUGE
STACK       SEGMENT STACK PARA 'STACK'
            DB 200 DUP(0)
STACK       ENDS
CODE        SEGMENT WORD PUBLIC 'CODE'
            ASSUME CS:CODE,DS:DATA,ss:stack
pp1         PROC FAR
START:      .386P
            CLI
            MOV AX,DATA
            MOV DS,AX
            MOV AX,STACK
            MOV SS,AX
            MOV SP,200
            STI
            ;
            LEA DX,ds:msg_k   ;prompt
            mov cx,1400h
            MOV AH,9
            INT 21H
            LEA DX,msg_SS   ;ss
            mov cx,1430h
            MOV AH,9
            INT 21H
            MOV AX,SS
            CALL BIN_TO_ASCII
            LEA DX,ASCII_BUF
            mov cx,1436h
            MOV AH,9
            INT 21H
            LEA DX,msg_CS   ;cs
            mov cx,1440h
            MOV AH,9
            INT 21H
            MOV AX,CS
            CALL BIN_TO_ASCII
            LEA DX,ASCII_BUF
            mov cx,1446h
            MOV AH,9
            INT 21H
            cli
            mov si,10
            mov k,0
l_out:      
            mov ax,k
            inc ax
            mov k,ax
            mov edi,02FFFFFFH
l_in:       mov ax,l
            mul l
            dec edi
            jnz l_in
            MOV AX,K
            CALL BIN_TO_ASCII
            LEA DX,ASCII_BUF
            mov cx,1416h
            MOV AH,9
            INT 21H
            dec si
            jnz l_out

pp1_end:    
            LEA DX,OK_MSG
            mov cx,1500h
            MOV AH,9
            INT 21H
pp1_end1:    
            MOV AX,4C00H
            INT 21H
            ;
pp1         ENDP
BIN_TO_ASCII PROC FAR
            ; input AX=binary value
            ; output ASCII_BUF:string 
            PUSH CX 
            PUSH DX 
            PUSH SI 
            MOV CL,020H
            MOV BYTE PTR ASCII_BUF,CL
            MOV BYTE PTR ASCII_BUF+1,CL
            MOV BYTE PTR ASCII_BUF+2,CL
            MOV BYTE PTR ASCII_BUF+3,CL
            MOV CX,10
            LEA SI,ASCII_BUF+4
BTOA1:      CMP AX,10
            JB  BTOA2
            XOR DX,DX
            DIV CX
            OR  DL,30H
            MOV [SI],DL
            DEC SI
            JMP BTOA1
BTOA2:      OR  AL,30H
            MOV [SI],AL        ;
            POP SI
            POP DX
            POP CX
            RET
BIN_TO_ASCII ENDP

CODE        ENDS

DATA        SEGMENT PUBLIC 'DATA'
g_tt        dw ?
k           dw ?
l           dw 1
ASCII_BUF   DB 5 DUP(30H),'$'
t_BUF       DB 10240 DUP(0)
OK_MSG      DB 'User_Ps end, Bye!   $'
msg_k       DB 'user_Ps ... running $'
msg_ss      DB 'ss: $'
msg_cs      DB 'cs: $'
DATA        ENDS
            END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -