实验四分支结构程序设计实验_张鹏一、实验目的1.掌握分支结构程序设计的基本设计方法;2.掌握条件转移指令和无条件转移指令的使用方法;3.掌握指令对标志寄存器中各标志位的影响情况;4.掌握多分支结构程序设计的三种方法:树型结构法、地址常数表法和指令常数表法。
二、实验要求1.学会使用DEBUG的T命令,跟踪检查指令对标志位的影响情况;2.学会使用DEBUG中的P命令,对INT指令的跟踪方法;3.学会利用设置断点调试程序的方法;4.了解大写、小写字母及数字在计算机内的表示方法及转换方法。
三、实验内容1.编写程序,已知在DATA开始的内存单元中,连续存放着三个一位十六进制数,找出其中最大数及最小数,存放在指定的内存单元中。
2.编写程序,已知在DATA开始的内存单元中,连续存放着三个带符号数据,判断三个数是否同号,若同时为正,则在屏幕上显示“+”号,若同时为负,则在屏幕上显示“-”号,否则显示“*”号。
3.编写程序,从键盘接收字符,判断该字符是否为字母、数字或非字母也非数字类字符。
若为字母,则在屏幕上显示“L”;若为数字,则在屏幕上显示“D”;若为非字母也非数字,则在屏幕上显示“O”。
4.编写程序,已知DATAX和DATAY单元各存放一个带符号字节数据,从键盘上接收加(+)、减(-)、乘(*)或除(/)号,完成相应运算,结果在屏幕上显示出来。
⑴当输入“+”号时,计算X+Y,并以十六进制形式显示出来;⑵当输入“-”号时,计算X-Y,并以十六进制形式显示出来;⑶当输入“*”号时,计算X*Y,并以十六进制形式显示出来;⑷当输入“/”号时,计算X/Y,并以十六进制形式显示出来;5.编写程序,从键盘输入若干个任意字符,如果是小写字母a~z之间的字符,请将它们转换成相应的大写字母,若为其它字符,则保持不变,将转换后的新字符保存在指定的存储单元中。
四、源程序4.1:DSEG SEGMENTHTAB DB '0123456789ABCDEF'MIN DB 0MAX DB 0DATA00 DB 37HDATA DB 3AHDATA1 DB 0DATA2 DB 0DATA3 DB 0DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV AH,01H ;第1个数INT 21HCMP AL,DATAJA CASE00SUB AL,30HJMP CASE000CASE00: SUB AL,DATA00CASE000:MOV DATA1,ALMOV DL,','MOV AH,02HINT 21HMOV AH,01H ;第2个数 INT 21HCMP AL,DATAJA CASE01SUB AL,30HJMP CASE011CASE01: SUB AL,DATA00 CASE011:MOV DATA2,ALMOV DL,','MOV AH,02HINT 21HMOV AH,01H ;第3个数 INT 21HCMP AL,DATAJA CASE02SUB AL,30HJMP CASE022CASE02: SUB AL,DATA00 CASE022:MOV DATA3,ALMOV DL,';'MOV AH,02HINT 21HMOV CL,DATA1MOV CH,DATA2CMP CL,CHJBE CASE1 ;DATA1小于等于DATA2JA CASE2 ;DATA1大于DATA2CASE1: MOV DH,DATA3CMP CL,DHJBE CASE11 ;DATA1小于等于DATA3JA CASE12 ;DATA1大于DATA3CASE11: MOV MIN,CLCMP CH,DHJBE CASE111 ;DATA2小于等于DATA3JA CASE112 ;DATA2大于DATA3CASE12: MOV MIN,DHMOV MAX,CHJMP SHOWCASE111:MOV MAX,DHJMP SHOWCASE112:MOV MAX,CHJMP SHOWCASE2: CMP CH,DHJBE CASE21 ;DATA2小于等于DATA3JA CASE22 ;DATA2大于DATA3CASE21: MOV MIN,CHCMP CL,DHJBE CASE211 ;DATA1小于等于DATA3 JA CASE212 ;DATA1大于DATA3CASE22: MOV MIN,DHMOV MAX,CLJMP SHOWCASE211:MOV MAX,DH JMP SHOWCASE212:MOV MAX,CL JMP SHOW SHOW: MOV CH,MIN MOV DH,MAXAND DH,0FH MOV AL,DHLEA BX,HTABXLATMOV DL,ALMOV AH,02HINT 21HMOV DL,','MOV AH,02HINT 21HAND CH,0FHMOV AL,CHXLATMOV DL,ALMOV AH,02HINT 21HMOV AH,4CH INT 21H CSEG ENDSEND START4.3:DSEG SEGMENTHTAB DB '0123456789ABCDEF'DATA1 DB 30HDATA2 DB 39HDATA3 DB 41HDATA4 DB 5AHDATA5 DB 61HDATA6 DB 7AHDSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG START: M OV AX,DSEGMOV DS,AXMOV AH,01H ;第1个数INT 21HMOV DH,ALMOV DL,','MOV AH,02HINT 21HCMP DH,DATA1JB CASEN ;DH小于DATA1CMP DH,DATA2JBE C ASED ;DH小于等于DATA2CMP DH,DATA3JB CASEN ;DH小于DATA3CMP DH,DATA4JBE C ASEL ;DH小于等于DATA4CMP DH,DATA5JB CASEN ;DH小于DATA5CMP DH,DATA6JBE C ASEL ;DH小于等于DATA6JA CASENCASEN: MOV DL,'O'MOV AH,02HINT 21HMOV DL,'T'MOV AH,02HINT 21HMOV DL,'H'MOV AH,02HINT 21HMOV DL,'E'MOV AH,02HINT 21HMOV DL,'R'MOV AH,02HINT 21HJMP CASEENDCASEL: M OV DL,'L'MOV AH,02HINT 21HMOV DL,'E'MOV AH,02HINT 21HMOV DL,'T'MOV AH,02HINT 21HMOV DL,'T'MOV AH,02HINT 21HMOV DL,'E'MOV AH,02HINT 21HMOV DL,'R'MOV AH,02HINT 21HJMP CASEENDCASED: MOV DL,'D' MOV AH,02HINT 21HMOV DL,'A'MOV AH,02HINT 21HMOV DL,'T'MOV AH,02HINT 21HMOV DL,'A'MOV AH,02HINT 21HJMP CASEENDCASEEND:MOV AH,4CHINT 21HCSEG ENDSEND START4.4:DSEG SEGMENTHTAB DB '0123456789ABCDEF'DATA1 DB 200DDATA2 DB 100DJIA DB 2BHJIAN DB 2DHCHEN DB 2AHCHU DB 2FHDATA DW 0JIA0 DW 0JIAN0 DW 0CHEN0 DW 0CHU0 DW 0DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG START: M OV AX,DSEGMOV DS,AXMOV AL,DATA1 ;加法XOR AH,AHMOV BL,DATA2XOR BH,BHADD AX,BXMOV JIA0,AXMOV AL,DATA1 ;减法XOR AH,AHMOV BL,DATA2XOR BH,BHSBB AX,BXMOV JIAN0,AXMOV AL,DATA1 ;乘法XOR AH,AHMOV BL,DATA2XOR BH,BHMUL BLMOV CHEN0,AXMOV AL,DATA1 ;除法XOR AH,AHMOV BL,DATA2XOR BH,BHDIV BLMOV CHU0,AXMOV AH,01H ;输入INT 21HCMP AL,CHENJE CASECHENCMP AL,JIAJE CASEJIACMP AL,JIANJE CASEJIANCMP AL,CHUJE CASECHUCASEJIA:MOV AX,JIA0MOV DATA,AXJMP SHOW CASEJIAN:MOV AX,JIAN0 MOV DATA,AXJMP SHOW CASECHEN:MOV AX,CHEN0 MOV DATA,AXJMP SHOW CASECHU:MOV AX,CHU0 MOV DATA,AXJMP SHOWSHOW: MOV DL,'='MOV AH,02HINT 21HMOV AX,DATA;显示高8位MOV DH,AHMOV CH,AHMOV CL,4SHR CH,CLMOV AL,CHLEA BX,HTABXLATMOV DL,ALMOV AH,02HINT 21HAND DH,0FHMOV AL,DHXLATMOV DL,ALMOV AH,02HINT 21HMOV AX,DATA;显示低8位MOV DH,ALMOV CH,ALMOV CL,4SHR CH,CLMOV AL,CHXLATMOV DL,ALMOV AH,02HINT 21HAND DH,0FHMOV AL,DHXLATMOV DL,ALMOV AH,02HINT 21HMOV AH,4CHINT 21HCSEG ENDSEND START。