发布时间 : 星期三 文章xin寰満鍘熺悊涓庢眹缂栬瑷绋嬪簭璁捐 - 鐧惧害鏂囧簱更新完毕开始阅读41dc57f1f90f76c661371a09
STACKS SEGMENT
;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX lea dx,input mov ah ,9 int 21h
mov ah ,1;此处输入代码据段代码 int 21h
and al,0fh mov bl,al
mov dl,'+' mov ah,2 int 21h
mov buf ,al mov ah,1 int 21h
mov buf+2 ,al and al,0fh add al,bl daa
mov bl,al mov dl,'=' mov ah,2 int 21h mov al,bl mov cl,4 shr al,cl or al,30h
mov dl,al mov ah,2 int 21h
21
mov buf+4,al and bl,0fh or bl,30h
mov buf+5,al mov dl,bl mov ah,2 int 21h
MOV AH,4CH INT 21H CODES ENDS END START
运行结果 INPUT 0-9:4+5=09
2、编写程序实现从键盘上输入一串字符,然后在下一行显示出来。 DATAS SEGMENT BUF DB 50 DB 0
DB 50 DUP(0)
CRLF DB 0DH,0AH,'$';此处输入数据段代码 DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
LEA DX ,BUF;此处输入代码据段代码 MOV AH,10 INT 21H LEA DX,CRLF MOV AH,9 INT 21H
MOV BL,BUF+1 MOV BH,0
MOV BYTE PTR BUF+2[BX],'$' LEA DX,BUF+2 MOV AH,9
22
INT 21H MOV AH,4CH INT 21H CODES ENDS END START
运行结果 aihgeriu$ aihgeriu
3、编写程序实现输入以空格开始以空格结束的一串字符,并在另一行显示。 部分参考程序:(请同学们补充显示程序段)
DATAS SEGMENT
buffer db 80hdup(?) ;此处输入数据段代码 flag db ?
crlf db 0dh,0ah,'$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
mov bx,offset buffer mov flag,0
next: mov ah,01h int 21h
test flag,01h jnz follow cmp al,20h jnz exit mov flag,1 jmp next
follow: cmp al,20h jz exit
mov [bx],al inc bx jmp next exit: lea dx,crlf mov ah,9 int 21h
mov byte ptr buffer [bx],'$' lea dx,buffer mov ah,9
int 21h;此处输入代码据段代码 MOV AH,4CH
23
INT 21H CODES ENDS
END START 运行结果 Abcdef Abcdef 【预习要求】
1、仔细阅读课本及相应教材。
2、参照程序框图编制源程序,准备好多组运算数据,以供校验。
【实验步骤】
1、确定算法,画出程序流程图。 2、利用文本编辑程序,建立源文件。
3、利用汇编程序MASM对源程序汇编,形成目标文件 4、利用LINK对目标文件进行链接,形成可执行文件。
5、运行可执行文件,如果有错误,利用DEBUG软件进行调试
【思考题】
1、现有(AX)=2000H,(BX)=1200H,(SI)=0002H,(DI)=0003H,(DS)=3000H, (SS)=3000H,(SP)=00000H,(31200H)=50H,(31201H)=02H,(31202H)=0F7H, (31203H)=90H请写出下列各条指令独立执行完后有关寄存器及存储单元地内容,若该指令影响标志寄存器,请给出状态标志SF,ZF,OF,CF的之值。 (1) ADD AX, 1200 (2) SUB AX, BX (3) MOV [BX], AX (4) PUSH AX
(5) DEC BYTE PTR [1200H] (6) NEG WORD PTR [1200H] (7) SAR BYTE PTR 1200[SI],1 (8) ROL BYTE PTR [BX+SI+1],1 (9) MUL WORD PTR [BX][SI] (10) DIV BYTE PTR 1200[DI]
2、设寄存器AL,BL,CL中内容均为76H, XOR AL,0FH AND BL,0FH OR CL,0FH
执行上述指令序列后:
AL=________ BL=________ CL=________
【实验报告要求】
1、记录实验步骤和出现的现象,按照要求写出显示结果,源程序加上注释。 2、比较实验记录和理论分析的结果是否相同,如果不同找出差别并分析原因。 3、写实验报告,画出算法流程图,运行可执行文件并写出运行结果。 4、回答思考题,总结本次实验体会。
24