汇编第2次上机实验报告.docVIP

  • 6
  • 0
  • 约5.88千字
  • 约 11页
  • 2023-10-15 发布于湖北
  • 举报
汇编语言上机实验报告 时间: 2013-4-19,19:00-21:30 地点: 南一楼803室 实验人员: 王 涛 实验一 一、题目 从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH !”, 不相等显示“NO MATCH !”。 二、实验要求 (1) 使用10号功能调用输入字符串; (2) 使用 9号功能调用输出提示信息。 三、寄存器分配和变量定义说明 1. 存储单元分配 2. 寄存器分配 四、流程图 开始 开始 将 将DATA中的数据放置到DS:数据段中 调用 调用10号指令输入字符串BUF1 并放置到数据段的BUF1中 输出数据段 输出数据段CRLF 中的回车换行 调用10 调用10号指令输入字符串BUF2 并放置到数据段的BUF2中 输出 输出数据段CRLF 中的回车换行 将输入的两个字符 将输入的两个字符串的实际长度分放到BUF1+1和BUF2+1中,且将字符串1的长度-CX ( (BUF1+1)==(BUF2+1) N Y (BUF1 (BUF1+2)==(BUF2+2) BUF1++, BUF1++,BUF2++;(CX)-- 输出“NO MATCH!” 输出“NO MATCH!” (CX)==0 输出 输出“MATCH!” 结束 结束 五、源程序 .386 DATA SEGMENT USE16 BUF1 DB 50 DB ? DB 50 DUP(0) BUF2 DB 50 DB ? DB 50 DUP(0) CRLF DB 0DH, 0AH, $ SENT1 DB MATCH!$ SENT2 DB NO MATCH!$ DATA ENDS STACK SEGMENT USE16 STACK DB 300 DUP(0) STACK ENDS CODE SEGMENT USE16 ASSUME DS:DATA, SS:STACK, CS:CODE START: MOV AX, DATA MOV DS, AX LEA DX, BUF1 MOV AH, 10 INT 21H LEA DX, CRLF MOV AH, 9 INT 21H LEA DX, BUF2 MOV AH, 10 INT 21H LEA DX, CRLF MOV AH, 9 INT 21H MOV BL, BUF1+1 MOV BH, 0 MOV DL, BUF2+1 MOV DH, 0 MOV CX, BX CMP DX, BX JNZ L1 JZ L2 L1: MOV DX, OFFSET SENT2 MOV AH, 9 INT 21H JMP EXIT L2: MOV DL, BUF1+2 MOV BL, BUF2+2 CMP DL, BL JNZ L1 INC BUF1 INC BUF2 DEC CX JNZ L2 JZ L3 L3: MOV DX, OFFSET SENT1 MOV AH, 9 INT 21H JMP EXIT EXIT: MOV AH, 4CH INT 21H CODE ENDS END START 六、实验步骤 1. 使用编辑程序EDIT.EXE录入源程序,存盘文件名为T1.ASM。 2. 使用MASM 6.0汇编源文件。即MASM T1; 3. 观察提示信息,若出错,则用编辑程序修改错误,存盘后重新汇编,直至不再报错为止。 4. 使用连接程序LINK.EXE将汇编生成的T1.OBJ文件连接成执行文件。 即LINK T1; 5. 若连接时报错,则依照错误信息修改源程序。之后重新汇编和连接,直至不再报错并生成T1.EXE文件。 6. 执行该程序。即在命令行提示符后输T1后回车,观察执行现象。 7. 使用TD.EXE观察T1的执行情况。即 TD T1回车 (1)观察CS、IP、SP、DS、ES、SS的值。 (2)单步执行开始2条指令,观察DATA的实际值,以及DS的改变情况。 (3)观察DS:0开始数据区,找到各变量在数据段中的位置和值。 (4) (5) (6) 七、实验记录(包括实验条件、输入/输出、错误和修改等信息的记录) 八、体会 实验二 一、题目 编写一个向用户提供指定字符串的ASCII码的程序。 二、实验要求

文档评论(0)

1亿VIP精品文档

相关文档