题目:
1)顺序结构:编写一个32位无符号数除法的程序。要求将存放在NUM1中的32位无符号数与存放在NUM2中的16位无符号数相除,结果存放在NUM3和NUM4中。
根据题目要求,应把存放在数据段内的被除数NUM1定义为32位,除数NUM2定义为16位,商NUM3定义为16位,余数NUM4定义为16位。
2)分支结构:编写一个字符比较程序,比较 3 个无符号字节数 A,B,C 的大小,并根据比较结果 对变量 K 赋值:
如果 3 个数不相等,则 K=0;
如果 3 个数中有两个相等,则 K=1;
如果 3 个数都相等,则 K=2。
3)循环结构:将字符串STRN(以“$”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符因含有奇数个“1”而加上了校验位。K统计结果存于N单元中。
4)子程序结构:将BUF开始的10个单元两位十六进制数转换成ASCII码,并在屏幕上显示出来。码型转换由子程序HEXASC实现,参数传送采用寄存器传送方式。
第一题:
框图:
代码:
DATA SEGMENTNUM1 DD 12345678HNUM2 DW 3456HNUM3 DW ?NUM4 DW ?
DATA ENDS
CODE SEGMENTASSUME CS:CODE, DS:DATA
START:MOV AX,DATAMOV DS,AXMOV DX,DS:[0002]MOV AX,DS:[0000]DIV NUM2MOV NUM3,AXMOV NUM4,DXMOV AH,4CHINT 21H
CODE ENDS END START
截图:
第二题:
框图:
代码:
DATA SEGMENTA DB 01HB DB 01HC DB 01HK DB ?
DATA ENDS
CODE SEGMENT
START:ASSUME CS:CODE,DS:DATAMOV AX,DATAMOV DS,AXMOV BL,0MOV AL,A
CMPAB: CMP AL,BJZ AB
CMPAC: CMP AL,CJZ AC
CMPBC: MOV DL,BCMP DL,CJZ BCJMP SK
AB: INC BLJMP CMPAC
AC: INC BLJMP CMPBC
BC: INC BLMOV K,BLCMP K,3JZ KDECSK: MOV K,BLJMP EXIST
KDEC: DEC K
EXIST: MOV AH,4CHINT 21H
CODE ENDSEND START
截图:
第三题:
框图:
代码:
DATA SEGMENTSTRING DB 'STRN$'N DB 0
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA
START: MOV AX,DATAMOV DS,AXMOV SI,0MOV CL,4
CHECK: MOV AL,[SI]TEST AL,[SI]JP EVNINC NOR BYTE PTR [SI],80H
EVN: INC SILOOP CHECK
EXSIT: MOV AH,4CHINT 21H
CODE ENDSEND START
截图:
结果如图所示:T和R进行了偶校验,因为‘T’=54H=0101 0100B,奇数个“1”
‘R’=52H=0101 0010B,奇数个“1”
第四题:
框图:
代码:
DATA SEGMENTBUF DB 11H,12H,13H,14H,15H,16H,17H,18H,19H,1AH
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA
START: MOV AX,DATAMOV DS,AXMOV BL,10MOV SI,0CALL HEXASCMOV AH,4CHINT 21H
HEXASC PROCCHANGE: MOV AL,BYTE PTR [SI]MOV CL,4SHR AL,CLADD AL,30HCMP AL,'9'JBE B9ADD AL,7HB9: MOV DL,ALMOV AH,2HINT 21HCHANGE2:AND BYTE PTR [SI],0FHADD BYTE PTR [SI],30HCMP BYTE PTR [SI],'9'JBE B19ADD BYTE PTR [SI],7HB19: MOV DL,[SI]MOV AH,2HINT 21HMOV DL,' 'MOV AH,2HINT 21HINC SIDEC BLLOOPNZ CHANGE RET
HEXASC ENDP
EXSIT: MOV AH,4CHINT 21H
CODE ENDSEND START
截图:
Alt+F5调出dos系统显示:
第五题:
框图:
代码:
DATA SEGMENTBUFF DB 50DB ?DB 50 DUP (?)
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA
START: MOV AX,DATAMOV DS,AXLEA DX,BUFFMOV AH,10INT 21HMOV CL,BUFF+1MOV SI,2
CHANGE: CMP BYTE PTR [SI],'a'JB SKIPCMP BYTE PTR [SI],'z'JA SKIPSUB BYTE PTR [SI],20H
SKIP: INC SILOOP CHANGE
SCREEN: LEA DX,BUFF+2MOV AH,09HINT 21H
EXSIT: MOV AH,4CHINT 21H
CODE ENDSEND START
截图:
分析:结果如图所示,所有小写字母转换为了大戏字母,其他不变。