题目:
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实现,参数传送采用寄存器传送方式。
第一题:
框图:
文章来源地址https://www.toymoban.com/news/detail-457533.html
代码:
文章来源:https://www.toymoban.com/news/detail-457533.html
DATA SEGMENT
NUM1 DD 12345678H
NUM2 DW 3456H
NUM3 DW ?
NUM4 DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,DS:[0002]
MOV AX,DS:[0000]
DIV NUM2
MOV NUM3,AX
MOV NUM4,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
截图:
第二题:
框图:
代码:
DATA SEGMENT
A DB 01H
B DB 01H
C DB 01H
K DB ?
DATA ENDS
CODE SEGMENT
START:
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV BL,0
MOV AL,A
CMPAB: CMP AL,B
JZ AB
CMPAC: CMP AL,C
JZ AC
CMPBC: MOV DL,B
CMP DL,C
JZ BC
JMP SK
AB: INC BL
JMP CMPAC
AC: INC BL
JMP CMPBC
BC: INC BL
MOV K,BL
CMP K,3
JZ KDEC
SK: MOV K,BL
JMP EXIST
KDEC: DEC K
EXIST: MOV AH,4CH
INT 21H
CODE ENDS
END START
截图:
第三题:
框图:
代码:
DATA SEGMENT
STRING DB 'STRN$'
N DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,0
MOV CL,4
CHECK: MOV AL,[SI]
TEST AL,[SI]
JP EVN
INC N
OR BYTE PTR [SI],80H
EVN: INC SI
LOOP CHECK
EXSIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
截图:
结果如图所示:T和R进行了偶校验,因为‘T’=54H=0101 0100B,奇数个“1”
‘R’=52H=0101 0010B,奇数个“1”
第四题:
框图:
代码:
DATA SEGMENT
BUF DB 11H,12H,13H,14H,15H,16H,17H,18H,19H,1AH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BL,10
MOV SI,0
CALL HEXASC
MOV AH,4CH
INT 21H
HEXASC PROC
CHANGE: MOV AL,BYTE PTR [SI]
MOV CL,4
SHR AL,CL
ADD AL,30H
CMP AL,'9'
JBE B9
ADD AL,7H
B9: MOV DL,AL
MOV AH,2H
INT 21H
CHANGE2:AND BYTE PTR [SI],0FH
ADD BYTE PTR [SI],30H
CMP BYTE PTR [SI],'9'
JBE B19
ADD BYTE PTR [SI],7H
B19: MOV DL,[SI]
MOV AH,2H
INT 21H
MOV DL,' '
MOV AH,2H
INT 21H
INC SI
DEC BL
LOOPNZ CHANGE
RET
HEXASC ENDP
EXSIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
截图:
Alt+F5调出dos系统显示:
第五题:
框图:
代码:
DATA SEGMENT
BUFF DB 50
DB ?
DB 50 DUP (?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DX,BUFF
MOV AH,10
INT 21H
MOV CL,BUFF+1
MOV SI,2
CHANGE:
CMP BYTE PTR [SI],'a'
JB SKIP
CMP BYTE PTR [SI],'z'
JA SKIP
SUB BYTE PTR [SI],20H
SKIP: INC SI
LOOP CHANGE
SCREEN: LEA DX,BUFF+2
MOV AH,09H
INT 21H
EXSIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
截图:
分析:结果如图所示,所有小写字母转换为了大戏字母,其他不变。
到了这里,关于汇编语言(32位除法、分支结构、循环结构,奇偶校验,ascii转换,功能号调用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!