文档详情

计算机组成原理实验程序.doc

发布:2017-06-20约1.91千字共3页下载文档
文本预览下载声明
操作练习 将内存3500H单元开始的0-15共16个数据传递到3600H单元开始的数据区中。实验程序及流程如下: STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT DW 64 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3500H ;建立源地址指针 MOV DI,3600H ;建立目标地址指针 MOV CX,0008H ;字数送入CX寄存器中 A1: MOV AX,[SI] ;取源数据一字送入AX中 MOV [DI],AX ;将源数据送入目标地址单元中 INC SI ;修正指针 INC SI INC DI INC DI DEC CX ;修改循环次数 JNZ A1 ;判断是否传送完毕 A2: JMP A2 CODE ENDS ;代码段结束 END START ;程序段结束 实验步骤 编写汇编语言源程序,生成文件 *.a或*.asm 命令“masm *.a” 链接命令“link *” 生成可执行文件 *.exe 调试 命令“debug *.exe” 调试命令有 显示存储单元的命令D格式为:或_D[range]修改存储单元内容命令格式为:检查和修改寄存器内容的命令R(register)显示CPU内所有寄存器内容和标志位状态,其格式为:显示和修改某个寄存器内容,其格式为:-R register name 显示和修改标志位状态,命令格式为:运行命令G,其格式为:ess3…]] ? ?其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。跟踪命令T(Trace)逐条指令跟踪从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。多条指令跟踪从指定地址起执行n条指令后停下来,n由value指定。汇编命令A(Assemble),其格式为:该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。J反汇编命令U(Unassemble)有两种格式。从指定地址开始,反汇编32个字节,其格式为:对指定范围内的存储单元进行反汇编,格式为:命名命令N(Name),其格式为:退出DEBUG命令Q(Quit),其格式为:┅┅┅┅┅┅┅┅┅(1) Di代表十进制数1,2,3,┅9,0; 上式转换为: ┅┅┅┅┅┅┅┅┅(2) 由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。程序流程及参考程序如下:(规定:被转换的ASCII码十进制数存放在3500H-3504H单元中,转换结果存在于3510H-3511H单元中。) STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT DW 64 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3500H MOV DI,3510H MOV BX,000AH MOV CX,0004H MOV AH,00H MOV AL,[SI] SUB AL,30H A1: IMUL BX ADD AL,[SI+01] SUB AL,30H INC SI LOOP A1 MOV [DI],AX A2: JMP A2 CODE ENDS END START 开始 设数据源地址、 目的地址、字节数 取源数据一字到AX中 (AX)送目标地址单元 修改指针 传完否? 停机 N YU 开始 定义源、目标地址 定义转换位数n 加一位ASCII码减30H 传完否? N-1→CX N YU 取第一位ASCII码 减去30H 乘10 存结果并停机
显示全部
相似文档