体系第一次上机作业
0示例程序调试
第5章第137页的示例程序,并增加如下功能:
(1) 程序开始时,在屏幕上显示本人的姓名全拼和学号,格式如下:
NAME: Xiao Wanzi
ID:1302102910
(2) 程序结束时,在屏幕上显示“Good Bye!”
(3) 此题不需要提交源代码,仅用于熟悉掌握汇编程序的基本结构。
提示:输入输出可见参考书《微型计算机基本原理与应用》的附录二“DOS功能调用”
- 代码如下
DATA SEGMENT ;数据段
NUM DW 0011101000000111B ;3A07H
MYNAME DB 'NAME:Feng Haoran','$' ;姓名
MYID DB 'ID:1600013009','$' ;学号
MYBYE DB 'Good Bye!','$' ;结束语
NOTES DB 'The result is:','$'
DATA ENDS
STACK SEGMENT STACK ;堆栈段
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT ;代码段
ASSUME CS:CODE, DS:DATA, SS:STACK
BEGIN: MOV AX, DATA
MOV DS, AX ;为DS赋初值
MOV AX, STACK
MOV SS, AX ;为SS赋初值
MOV AX, TOP
MOV SP, AX ;为SP赋初值
MOV DX, OFFSET MYNAME
MOV AH, 09H ;显示字符串MYNAME
INT 21H ;DS:DX=串地址,'$'结束字符串
MOV DL, 0DH ;输出回车
MOV AH, 2
INT 21H
MOV DL, 0AH ;输出换行
MOV AH, 2
INT 21H
MOV DX, OFFSET MYID
MOV AH, 09H ;显示字符串MYID
INT 21H ;DS:DX=串地址,'$'结束字符串;INT 21H是中断指令,执行后标记就被存储进AL中;AH为09H时INT的功能是输出字符串,02H时为输出字符
MOV DL, 0DH ;输出回车,0D是回车
MOV AH, 2
INT 21H
MOV DL, 0AH ;输出换行
MOV AH, 2
INT 21H
MOV DX, OFFSET NOTES
MOV AH, 09H ;显示字符串NOTES,ASCII码09对应tab
INT 21H ;DS:DX=串地址,'$'结束字符串
MOV BX, NUM ;将数装入BX
MOV CH, 4 ;共4个十六进制数字
ROTATE: MOV CL, 4 ;CL为位移位数
ROL BX, CL
MOV AL, BL
AND AL, 0FH ;AL为1个十六进制数

这篇博客介绍了作者在学习体系结构时进行的上机作业,涉及汇编语言程序设计。作业内容包括利用DOS功能调用实现简单输入输出,以及使用串指令在字符串中查找字符。作业要求程序开始和结束时显示个人信息,并在不同场景下处理键盘输入。文章还提到了在enum8086环境下遇到的编译问题以及解决办法,并提供了代码示例。
最低0.47元/天 解锁文章
1980

被折叠的 条评论
为什么被折叠?



