当前位置:文档之家› 8086实验报告

8086实验报告

在EMU8086下环境单步调试程序实验报告1.实验时间:2013年4月23日2.实验地点:图书馆3.实验名称:在EMU8086下环境单步调试程序4. 实验目的:(1)熟悉EMU8086仿真环境(2)在EMU8086环境下单步调试给出的程序,加深对重要指令的理解5.实验所用设备与软件:硬件:PC机一台;软件:EMU80866.实验方法、过程与实验结果的分析完整代码如下(已补充,已修改)org 100h ; set location counter to 100h;mov指令mov CL,23Hmov CH,45H ;(cx)=4523Hmov AX,1234H ;(AX)=1234Hmov WORD ptr[300H],0180H ;( 300H)=0180Hmov bx,[300H] ;(bx)=0180Hmov [300H],cx ;(300H)=4523Hmov ax,ds ;(ax)=0700Hmov ds,bx ;(ds)=0180Hmov es,[300H] ;(es)=0000Hmov [300H],ss ;(ss)=0700mov bx,cs ;(bx)=0700mov [300H],cs ;(300H)=0700目的操作数不允许为CS段寄存器;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;XCHG指令MOV AX,1234H ;(AX)=1234HMOV BX,3456H ;(BX)=3456HXCHG AX,BX ;(AX)=3456H,(BX)=1234HMOV AX,1234H ;(AX)=1234HMOV WORD ptr[300H],0100H;( 300H)=0100HXCHG AX,[300H];(AX)=0100H,( 300H)=1234H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV BX,OFFSET TABLEMOV AL,15XLAT ;(AL)=225H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;堆栈指令MOV AX,1234H ;(AX)=1234HPUSH AXPOP BX;(BX)=1234HMOV WORD ptr[300H],0100H;(300H)=0100HPUSH [300H]POP BX ;(BX)=0100H POP弹栈指令为字操作;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;地址传送指令MOV BX,1234H;(BX)=1234HLEA AX,10H[BX];(AX)=1244H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;输入/输出指令mov ax, 30303Dout 199, ax;199端口是十进制LED数字模拟端口in al, 7 ;7号端口是马达的准备好位;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;加/减法运算MOV AX,1234H;(AX)=1234HMOV WORD PTR[300H],0100H;(300)=0100HADD AL,[300H]SUB AL,[300H] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;加1/减1指令MOV CX,10H ;CX=0010HINC CX ;CX=0011HDEC CX ;CX=0010H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;整数变反指令MOV AL,0f1H;(AL)=F1HNEG AL ;(AL)=0fHMOV AL,80H ;(AL)=80HNEG AL ;(AL)=80H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;比较指令MOV AX,1234H ;(AX)=1234HMOV WORD PTR[300H],0100H;(300H)=0100HCMP AX,[300H] ;CF=0,ZF=0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;乘法指令;单乘法指令MOV AX,1234H ;(AX)=1234HMOV WORD PTR[300H],0100H;(300H)=0100H MUL WORD PTR[300H]MOV AX,1234H ;(AX)=1234H MOV WORD PTR[300H],0100H;(300H)=0100H IMUL WORD PTR[300H]MOV AX,45H ;(AX)=0045H MOV BX,63HMUL BX ;(DX:AX)=1AAFH;双乘法指令MOV AX,8885H ;(AX)=8885HMOV BX,63HIMUL BX ;(DX:AX)=ffd1cb6fH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;除法指令MOV AX,0400HMOV byte PTR[300H],0b4HDIV byte PTR[300H];(AL)=05H (AH)=7CH MOV AX,0400HMOV BL,0b4HIDIV BL ;(AL)=0f3H (AH)=024H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;数据宽度变宽交换指令MOV AL,12HCBW ;(AX)=0012HCWD ;(DX:AX)=00000012HMOV AL,82HCBW ;(AX)=ff82HCWD ;(DX:AX)=ffffff82H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BCD调整MOV AL,39HMOV BL,36HADD AL,BLAAADAASUB BL,ALAASDASMOV AL,07HMOV BL,06HMUL BLAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;逻辑运算指令mov AL,0aahAND AL,0fhor al,0fhxor al,alnot alTest al,02h ;ZF=0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;移位指令mov ax,2SHL AX,1 ;SALMOV CL,2SHL AX,CL ;SALMOV AL,8AhSHR AL,1 ;(AL)=45HSAR AL,1SHR AL,2xor ax,ax ; CF=0mov AX,8CFFhROL AX,1;CF=1 SF=0 ZF=0 OF=1 PF=0xor ax,ax ; CF=0mov AX,8CFFhROR AX,1;CF=1 SF=1 ZF=0 OF=0 PF=0xor ax,ax ; CF=0mov AX,8CFFhRCL AX,1;CF=1 SF=0 ZF=0 OF=1 PF=1xor ax,ax ; CF=0mov AX,8CFFhRCR AX,1;CF=1 SF=0 ZF=0 OF=1 PF=1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;串操作指令LEA SI,FIRST ;mov si,offset FIRSTLEA DI,SECOND ;mov di,offset Secondmov cx,10CLD ;done1: movsw ;movs Second,FIRSTloop done1LEA SI,FIRST ;mov si,offset FIRSTLEA DI,SECOND ;mov di,offset Secondmov cx,10 ;mov bx,0CLD ;done2: LODSW ;LODS FIRSTadd bx,ax ; 将First数组中的数相加存到bx中STOSW ;STOS SECONDloop done2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV AX,14c6hMOV BX,80DChCMP AX,BXJNO PROG1JNC PROG2JMP PROG3PROG1: mov CX,1JMP PROG4PROG2: mov CX,2JMP PROG4PROG3: mov CX,3PROG4: mov dl,'O'mov AH,2int 21H ;输出'O'mov dl,'K'int 21H ;输出'K'ret;TABLE存放着0~15的平方TABLE DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 FIRST DW 1,2,3,4,5,6,7,8,9,10SECOND DW 10 DUP(0)7.实验总结通过这次实验,初步了解了EMU8086模拟器环境,及其使用方法。

在刚使用模拟器时,不知道如何调试,如何进行单步跟踪,如何根据程序每一部的运行来知道运行结果,慢慢自己调试,看书,上网查资料和别人讨论,才知道了解会使用EMU8086模拟器编译,并初步知道通用寄存器,标志寄存器的显示,跟踪代码如何运行。

EMU8086编译源代码,并在模拟器上一步一步的执行。

可视化界面易于查看。

可以在执行程序的同时可观察寄存器,标志位和内存。

算术和逻辑运算单元显示中央处理器内部的工作情况。

通过实验中和看书,了解到应用伪指令能更好地组织汇编语言程序。

其中ORG指令,开始执行的时候,将某段语言装载到内存中的哪个地址,在改变数值之后,内存也随之改变。

另外在程序最后。

相关主题