ch03 汇编语言程序设计Word文档下载推荐.docx
- 文档编号:6357955
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:22
- 大小:19.83KB
ch03 汇编语言程序设计Word文档下载推荐.docx
《ch03 汇编语言程序设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ch03 汇编语言程序设计Word文档下载推荐.docx(22页珍藏版)》请在冰点文库上搜索。
(1)MOVK1,AX
(2)MOVA1,AX
(3)CMPA1,A2(4)K1EQU2048
(1)K1为常量,不能用MOV指令赋值;
(2)A1为字节,AX为字变量,不匹配;
(3)A1未定义,无法做比较指令;
(4)K1重新赋值前,必须用PURGE释放。
4.数据定义语句如下所示:
FIRSTDB90H,5FH,6EH,69H
SECONDDB5DUP(?
)
THIRDDB5DUP(?
自FIRST单元开始存放的是一个四字节的十六进制数(低位字节在前),要求:
编一段程序将这个数左移两位后存放到自SECOND开始的单元,右移两位后存放到自THIRD开始的单元。
(注意保留移出部分)
DATASEGMENT
FIRSTDB90H,5FH,6EH,69H
THIRDDB5DUP(?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,FIRST
LEADI,SECOND
MOVCX,2
CLC
;
左移2位
MOVAX,[SI]
INCSI
MOVDX,[SI]
PUSHDX
PUSHAX
ROLDX,CL
ANDDL,03H
MOV[DI+4],DL
ROLAX,CL
ANDAL,03H
MOVBL,AL
POPAX
POPDX
SHLDX,CL
SHLAX,CL
ORDL,BL
MOV[DI],AX
MOV[DI+2],DX
右移2位,类同左移的方法,略
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5.(原14)在当前数据区从400H开始的256个单元中存放着一组数据,试编程序将它们顺序搬移到从A000H开始的顺序256个单元中。
DATASEGMENT
ORG400H
DAT1DB...;
256DUP(?
ORG0A000H
DAT2DB...;
DATAENDS
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE,SS:
STACK,ES:
START:
MOVAX,DATA
MOVDS,AX
;
CH3-14
LEASI,DAT1
LEADI,DAT2
MOVCX,128
AGAIN:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPAGAIN
CH3-15,将两个数据块逐个单元进行比较,若有错BL=00H,否则BL=FFH
NEXT:
MOVBL,[DI]
CMPAL,BL
JNZERROR
LOOPNEXT
MOVBL,0FFH
JMPEXIT
ERROR:
MOVBL,00H
EXIT:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
6.试编程序将当前数据区从BUFF开始的4K个单元中均写入55H,并逐个单元读出比较,看写入的与读出的是否一致。
若全对,则将ERR单元置0H;
如果有错,则将ERR单元置FFH。
BUFFDB1000HDUP(?
ERRDB?
ASSUMECS:
CODE,DS:
将55H依次放入BUFF开始的4K个单元
LEASI,BUFF
MOVCX,1000H
MOVAL,55H
NTXT:
MOV[SI],AL
取出与55H比较,全对则ERR=0,否则ERR=FFH
LEADI,BUFF
LEASI,ERR
NEXT1:
MOVAL,[DI]
CMPAL,55H
JNZERROR;
若有一个不同,即置ERR=FFH
LOOPNEXT1
MOVAL,00H
MOV[SI],AL;
全比较完无错,则置ERR=0
MOVAL,0FFH
返回DOS
MOVAH,4CH
END
7.在上题中,如果发现有错时,要求在ERR单元中存放出错的数据个数,则程序该如何修改?
ERRDW?
取出与55H比较
MOVDX,0000H
JZNEXT2;
若相同,则比较下一个
INCDX;
否则将放出错个数的DX加1
NEXT2:
MOV[SI],DX
8.试编写程序段,完成将数据区从0100H开始的一串字节数据逐个从F0H端口输出,已知数据串以0AH为结束符。
(略)
9.(原24)内存中以FIRST和SECOND开始的单元中分别存放着两个4位用压缩BCD码表示的十进制数,低位在前。
编程序求这两个数的和,仍用压缩BCD码表示,并存到以THIRD开始的单元。
FIRSTDW3412H
SECONDDW7856H
THIRDDB?
?
LEASI,FIRST
LEADI,SECOND
LEABX,THIRD
MOVCX,2
CLC
MOVAL,BYTEPTR[SI]
MOVDL,BYTEPTR[DI]
ADCAL,DL
DAA
MOVBYTEPTR[BX],AL
INCBX
JCAA
MOVBYTEPTR[BX],0
AA:
MOVBYTEPTR[BX],1
10.(原27)设字变量单元A、B、C存放有三个数,若三个数都不为零,则求三个数的和,存放在D中;
若有一个为零,则将其余两个也清零,试编写程序。
ADB?
BDB?
CDB?
DDW?
LEASI,A
LEADI,D
CMPAL,00
JZZERO
ADCDX,AL
LEASI,B
LEASI,C
MOV[DI],DX
ZERO:
MOVAL,0
MOVA,AL
MOVB,AL
MOVC,AL
11.(16)试编程序,统计由TABLE开始的128个单元中所存放的字符“A”的个数,并将结果存放在DX中。
TABLEDBX1,X2,...X128
LEASI,TABLE
MOVDX,0
CMPAL,'
A'
JNZNEXT
INCDX
12.试编制一个汇编语言程序,求出首地址为DATA的1000个字数组中的最小偶数,并把它存放于MIN单元中。
(方法:
利用书上排序的例题做相应的修改即可,略)
13.在上题中,如果要求同时找出最大和最小的偶数,并把它们分别存放于MAX和MIN单元中,试完成程序。
略(方法同第12题)。
14.(28)在DATA字数组中存放有100H个16位补码数,试编写一程序求它们的平均值,放在AX中,并求出数组中有多少个数小于平均值,将结果存于BX中。
15.(17)编写一个子程序,对AL中的数据进行偶校验,并将经过校验的结果放回AL中。
COUNTEQU7
MOVCX,COUNT
RCRAL,1
JNCL
L:
TESTDX,01
JZEXIT
ORAL,80
ANOTHERMETHORD
JPEXIT
ORAL,80H
16.(18)利用上题的予程序,对DATA开始的256个单元的数据加上偶校验,试编程序。
DATDB...;
RESULTDB...;
NUMEQU256
LEASI,DAT
LEADI,RESULT
MOVCX,NUM
CALLSUB1
MOV[DI],AL;
MOV[SI],AL
SUB1PROC
JZQUIT
QUIT:
RET
SUB1ENDP
17.(19)试编写程序实现将键盘输入的小写字母转换成大写字母并输出。
MESSDB'
THEINPUTISNOTCORRECT.'
0DH,0AH,'
$'
MOVAH,01H
Q'
a'
JBERROR
z'
JAERROR
SUBAL,20H
MOVAH,02H
MOVDL,AL
JMPNEXT
MOVAH,09H
LEADX,MESS
18.从键盘接收20个字符,按键入顺序查找最大的字符,并显示输出。
DATDB20DUP(?
MOVAX,DATA
MOVDS,AX
从键盘接收20个字符,并送DAT中保存
MOVCX,20
比较20个字符中的最大字符,并放入AL中
MOVCX,19
CMPAL,[SI]
JAELL
LL:
将最大的字符的ASCII码由AL送DL显示
MOVAH,2H
19.(29)编写汇编程序,接收从键盘输入的10个数,输入回车符表示结束,然后将这些数加密后存于BUFF缓冲区中。
加密表为:
输入数字:
0,1,2,3,4,5,6,7,8,9;
密码数字:
7,5,9,1,3,6,8,0,2,4
BUFFDB10DUP(?
TABLEDB7,5,9,1,3,6,8,0,2,4
INT21H;
从键盘上接收单个字符
CMPAL,0AH;
与0AH比,判是否要结束
SUBAL,30H;
否则,将0~9的ASCII码转换为十进制数
LEABX,TABLE
XLAT;
用查表指令进行加密
退出并返回DOS
20.(23)有一个100个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素,试编程序在表内查找,若表内已有此元素,则结束;
否则,按顺序将此元素插入表中适当的位置,并修改表长。
21.(26)在当前数据段(DS),偏移地址为DATAB开始的顺序80个单元中,存放着某班80个同学某门考试成绩。
按要求编写程序:
①编写程序统计≥90分;
80分~89分;
70分~79分;
60分~69分,<60分的人数各为多少,并将结果放在同一数据段、偏移地址为BTRX开始的顺序单元中。
②试编程序,求该班这门课的平均成绩为多少,并放在该数据段的AVER单元中。
;
统计学生成绩
DATASEGMENT
DATABDBX1,X2,...,X80
NEQU$-DATAB
ORG100H
BTRXDW0
S8DW0
S7DW0
S6DW0
S5DW0
ORG110H
AVERDW?
STACKSEGMENTSTACK
STADB20DUP(0)
TOPEQU$—STA
STACKENDS
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
PUSHDS
SUBAX,AX
MOVAX,DATA
MOVDS,AX
MOVCX,N
MOVBX,0000H
MOVDX,0000H
LEASI,DATAB;
成绩表首地址
COMPARE:
MOVAL,[SI]
CMPAL,60;
<
60?
JLFIVE
CMPAX,70;
70?
JLSIX
CMPAX,80;
80?
JLSEVEN
CMPAX,90;
90?
JLEIGHT
INCS9
JMPCHA
EIGHT:
INCS8
SEVEN:
INCS7
SIX:
INCS6
FIVE:
INCS5
CHA:
ADDBX,AL
JNCNEXT
ADCDX,0
NEXT:
INCSI;
循环学生人数
LOOPCOMPARE
MOVAX,BX
MOVCX,N
DIVCX
MOVAVER,AX
MOVAH,4CH
INT21H
RET
MAINENDP
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch03 汇编语言程序设计 汇编语言 程序设计