mov ah,10 int 21h lea dx,crlf mov ah,9 int 21h mov bl,buf+1 mov bh,0 lea dx,buf+2 mov ah,9 int 21h mov ah,4ch int 21h
;输出字符串
;计算字符串实际字符个数
mov byte ptr buf+2[bx], '$' ;在串尾补入'$'
;输出换行
code ends end start
在这一次的实验中输出数字,需要加上30h或者37h输出才能输出实际的数字,就是在代码中用ASCII码表示,这个考试的时候忘记了,结果也没有想起
来,考试的时候错了,还有就是固定格式的cs:code ds:data cs平时直接复制的考试的时候写成了es,真是有点遗憾。
实验三 汇编语言子程序设计(分支、子程序)
一. 实验目的
1、掌握分支和子程序结构和设计方法;
2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。 3、通过汇编语言了解高级语言的参数传递等知识。
二. 实验内容
1、1. BL中的只有一位为1。编写程序测试,并输出提示信息“The X Bit is 1”,要求:地址表和转移表。
2. 编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。要求通过堆栈(寄存器、内存)传送所有参数。 3. 实践C?Asm的转换过程。
三. 实验过程和程序 程序 1.
Data segment
S1 DB 'The 1 Bit is 1$' S2 DB 'The 2 Bit is 1$' S3 DB 'The 3 Bit is 1$' S4 DB 'The 4 Bit is 1$' S5 DB 'The 5 Bit is 1$' S6 DB 'The 6 Bit is 1$' S7 DB 'The 7 Bit is 1$' S8 DB 'The 8 Bit is 1$' Data ends code segment
assume cs:code, ds:data start:
mov ax,data mov ds,ax mov dx,0
;-------输入BL-------- MOV BL, 00001000B MOV AL,BL ;------循环开始-------- MOV CX, 8 GOGO: SHL AL,1
;-------跳转------------- JC EXIT add dx,3 LOOP GOGO
;************************ EXIT:
MOV AH,9 LEA SI,JMPTABLE ADD SI,DX JMP SI JMPTABLE:
JMP NEAR PTR L1 JMP NEAR PTR L2 JMP NEAR PTR L3 JMP NEAR PTR L4 JMP NEAR PTR L5 JMP NEAR PTR L6 JMP NEAR PTR L7 JMP NEAR PTR L8 L1:
LEA DX,S1 JMP DONE L2:
LEA DX,S2 JMP DONE L3:
LEA DX,S3 JMP DONE L4:
LEA DX,S4 JMP DONE L5:
LEA DX,S5 JMP DONE L6:
LEA DX,S6 JMP DONE L7:
LEA DX,S7 JMP DONE L8:
LEA DX,S8 DONE: INT 21H mov ah, 4ch int 21h code ends
end start