📄 trp.s
字号:
.define .trpdivz.define .trpilin.define .trpcase.define .trprang.define .trpset.define .trpnofp.define .trpheap.define .trp.bss.M: .zerow 24/2.text.extern .trpdivz.extern .trpilin.extern .trpcase.extern .trprang.extern .trpset.extern .trpnofp.extern .trpheap.extern .trp.trpdivz:mov ax,#6mov dx,#.Mdivzjmp .Trp.trpilin:mov ax,#18mov dx,#.Milinjmp .Trp.trpcase:mov ax,#20mov dx,#.Mcasejmp .Trp.trprang:mov ax,#1mov dx,#.Mrangjmp .Trp.trpset:mov ax,#2mov dx,#.Msetjmp .Trp.trpnofp:mov ax,#18mov dx,#.Mnofpjmp .Trp.trpheap:mov ax,#17mov dx,#.Mheapjmp .Trp.Trp:xor bx,bx.extern .trppcxchg bx,.trppctest bx,bxjz 2fpush axcall (bx)pop axret2:mov bx,#22push bxpush dxmov ax,#2push axcall .Writecall __exit.trp:mov dx,axcmp dx,#21jae 1fsal dx,#1mov bx,#.Mtableadd bx,dxmov bx,(bx)test bx,bxjz 1fmov dx,bxjmp 2f1:mov bx,#.Mtrp+14mov cx,#6mov dx,ax1:and dx,#7add dx,'0'movb (bx),dldec bxsar dx,#1sar dx,#1sar dx,#1loop 1bmov dx,#.Mtrp2:jmp .Trp.Write:push bpmov bp,spmov .M+2,#4mov bx,4(bp)mov .M+4,bxmov bx,8(bp)mov .M+6,bxmov bx,6(bp)mov .M+10,bxmov ax,#.Mpush axmov ax,#1push axmov ax,#1mov bx,#.Mmov cx,#3int 32mov sp,bppop bpret.data.Mtable: .data2 0, .Mrang, .Mset, 0, 0, 0, .Mdivz, 0 .data2 0, 0, 0, 0, 0, 0, 0, 0 .data2 0, .Mheap, .Milin, .Milin, .Mcase.Mdivz: .asciz "Error: Division by 0 \n".Milin: .asciz "Illegal EM instruct'n\n".Mcase: .asciz "Err in EM case instr \n".Mrang: .asciz "Variable out of range\n".Mset: .asciz "Err in EM set instr \n".Mnofp: .asciz "Floating pt not impl.\n".Mheap: .asciz "Heap overflow \n".Mtrp: .asciz "EM trap 0000000 octal\n"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -