xin寰満鍘熺悊涓庢眹缂栬瑷绋嬪簭璁捐 - 鐧惧害鏂囧簱 联系客服

发布时间 : 星期三 文章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