第3题截图
五. 实验体会
在这一次的实验中用到CBW和CWD命令来扩展符号位,解决处理数据的时候数据类型不匹配的问题。同时也学到了从键盘上读取字符以及打印字符的方法。
实验三 汇编语言子程序设计(分支、子程序)
一. 实验目的
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 2.
;堆栈传递 Stack segment dw 512 dup(?) Stack ends Data segment
x dw 4 y dw 4 z dw ?
Data ends Code segment
assume cs:code, ds:data, ss:stack mov ax,data mov ds,ax
sub sp,2 mov ax,x push ax start: