南邮汇编实验二

实验原理及内容:

程序执行后,给出操作提示,请用户输入用户名和密码;用户在输入密码时,程序不回显输入字符,只有当用户输入的用户名、密码字符串和程序内定的字符串相同时。才显示欢迎界面,并返回DOS。界面颜色自定(彩色或黑白)。

程序代码:

DATA SEGMENT
MESG1 DB 'B20030105	$'
MESG2 DB 'password:$'
PWD   DB 30 DUP(?)
PWDLENGTH DB 0

U     DB 'B21xxxxxx'
ULENGTH EQU $-U

P     DB '11111'
MLENGTH EQU $-P

WELCOME DB 'true$'
ERROR   DB 'fail$'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG:  MOV AX,DATA
      MOV DS,AX
      MOV DI,3

NEXT0:
      CMP DI,0
      JZ ERR

	  MOV PWDLENGTH,0
	  MOV AH,09H
      MOV DX,OFFSET MESG1   ;显示学号
      INT 21H

      MOV AH,02H
      MOV DL,0AH        ;换行
      INT 21H
      
      MOV AH,09H
      MOV DX,OFFSET MESG2   ;显示密码
      INT 21H
      
      MOV CX,MLENGTH
      MOV SI,OFFSET PWD

NEXT1:
      MOV AH,07H       ;无回显从键盘读入一个字符
      INT 21H
      CMP AL,0DH
      JE  NEXT2            ;等于回车符号则跳转IND

      MOV [SI],AL
      MOV AH,02H        ;显示字符
      MOV DX,'*'
      INT 21H
      INC PWDLENGTH     ;输入的密码长度+1
      INC SI            ;密码源变址寄存器的地址+1
      JMP NEXT1

NEXT2:  
      MOV AH,02H
      MOV DL,0AH        ;换行
      INT 21H

      DEC DI

      MOV BX,OFFSET P
      MOV SI,OFFSET PWD    
      MOV CL,PWDLENGTH
      MOV CH,0
	  CMP CX,MLENGTH      ;比较密码长度
	  JNZ NEXT0

	  MOV CX,MLENGTH

NEXT3:
	  MOV AL,[BX]
      CMP [SI],AL
      JNZ NEXT0
      INC SI
      INC BX
      LOOP NEXT3
      JMP WEL
      
WEL:  MOV AH,09H
      MOV DX,OFFSET WELCOME
      INT 21H
      JMP EXIT

ERR:  MOV AH,09H
      MOV DX,OFFSET ERROR
      INT 21H
      JMP EXIT

EXIT: MOV AH,4CH
      INT 21H

CODE ENDS
      END BEG

<think>好的,我现在需要帮用户电大学汇编语言的实验报告示例或指导。首先,用户的问题是关于汇编实验的资料,可能需要具体的报告结构、内容或者源码示例。根据用户提供的引用,特别是引用[2]、[3][4],里面提到了实验内容、语法练习、代码转换以及编译器的选择。 首先,我应该整理现有的引用信息。引用[2]提到了汇编语言语法练习代码转换设计,包括基本概念实验方法。引用[3]提到了实验内容,如循环程序编写DOS、BIOS功能调用的使用。引用[4]则讨论了编译器的选择,建议使用GCC而是Visual Studio。这些信息可以作为回答的基础。 接下来,用户需要的是实验报告示例或指导,可能需要包括实验目的、设备、原理、步骤、源码分析等部分。根据引用[1]中的电工电子实验报告结构,可以推测汇编实验报告可能有类似的结构,所以可以借鉴这一点。 然后,我需要确保回答符合系统级指令,比如使用正确的中文LaTeX格式。例如,在提到内存地址或寄存器,可能需要用行内数学表达式,比如地址$0x7C00$。同,要生成相关问题,比如关于实验步骤、调试方法或编译器选择的问题。 还要注意引用标记的位置,比如在提到实验内容或编译器建议,自然地加上[^3]或[^4]。同,避免使用Markdown格式,所以代码部分需要用适当的符号标注,比如用四个空格缩进。 现在,我需要组织这些信息,结构清晰,分步骤说明实验报告的组成部分,可能包括实验目的、设备、原理、步骤、源码示例、注意事项等部分。在源码示例部分,可能需要提供一段简单的汇编代码,比如显示字符串的功能调用,并解释每行代码的作用。 最后,生成的相关问题要围绕用户可能进一步关心的点,比如实验常见错误、调试工具、成绩考核标准等,帮助用户全面了解实验的要求难点。 需要检查是否所有引用都正确对应,比如引用[3]提到实验内容,引用[4]关于编译器,确保在适当的地方加入引用标识。同,确保LaTeX语法正确,比如使用$...$包裹变量或地址,独立公式用$$...$$,但在这个问题中可能需要独立公式。 总结步骤:整理引用内容,确定报告结构,提供示例代码,列出注意事项,生成相关问题,并正确引用来源。</think>### 电大学汇编语言实验报告指导 根据实验要求引用资料[^2],汇编语言实验报告通常包含以下核心内容: #### 一、实验基本结构 1. **实验目的** 明确实验需掌握的知识点,例如: - 掌握汇编语言分支/循环结构编程方法 - 熟悉DOS功能调用实现输入输出 2. **实验设备与环境** - 硬件:PC机、8086仿真平台 - 软件:MASM/TASM汇编器(推荐GCC替代Visual Studio) 3. **实验原理** 使用公式说明关键算法,例如: 计算$S=\sum_{i=1}^{n} i^2$,用寄存器$AX$存储累加结果,$CX$作为循环计数器。 #### 实验步骤示例(显示字符串功能) ```asm ; 实验三:DOS功能调用示例 DATA SEGMENT MSG DB 'NJUPT Assembly Lab$' DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX LEA DX, MSG MOV AH, 09H ; 功能号09H:显示字符串 INT 21H MOV AH, 4CH ; 程序终止 INT 21H CODE ENDS END START ``` *代码说明:通过INT 21H的09H功能显示预定义字符串[^3]* #### 三、报告注意事项 1. **源码分析** - 需标注段寄存器初始化过程(如MOV DS, AX) - 说明中断调用的参数传递方式(如DX存放字符串偏移地址) 2. **调试记录** - 记录使用DEBUG工具查看寄存器状态的截图 - 典型错误示例: `Error A2070: invalid instruction operands`(操作数类型匹配) 3. **实验结论** 需包含: - 程序功能验证结果 - 关键指令执行效果分析(如循环次数$n$与CX寄存器值的关系)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值