汇编语言超浓缩教程 联系客服

发布时间 : 星期二 文章汇编语言超浓缩教程更新完毕开始阅读6cac46bdfd0a79563c1e7273

器内容压入、弹出,用来保护寄存器数据,子程序调用中运用较多。堆栈指针有个“后进先出”原则,像PUSH AX,PUSH BX…POP BX,POP AX这样才能作到保护数据丝毫不差。 汇编语言超浓缩教程到这要告一段落了,希望能奠定你独立设计的基础。而更多更好的技巧则全依赖你平时的积累了。祝你成功!

汇编语言程序设计习题

设计:吴启武 习题一

1、将下列二进制数化为十进制数和十六进制数:

1) 11010011B (2) 11100100B (3) 11111111B (4) 10000000B

2、试说明16位二进制表示的无符号整数和有符号整数所能表示的数值范围。 3、将下列十六进制数化为十进制数和二进制数: (1) 0D742H (2) 8765H (3) 0FFDCH (4) 2468H 4、设变量A的内容是8位二进制数 (1) 将变量A所有位清零和置1。

(2) 将变量A的第4位清零,第2位置1。 (3) 将变量A的各位求反。

5、将下列十进制数分别转换为非压缩的BCD码和压缩的BCD码: (1) 46 (2) 52 (3) 99 (4) 37

6、求下列十进制数对应的8位二进制补码的表示形式: (1) -50 (2) 30 (3) -58 (4) -128 习题二

1、指出下列指令的寻址方式:

(1) MOV CX,100 (2) MOV AX,25[SI]

(3) MOV [DI+BX],AX (4) ADD AX,ADDR (5) MUL BL (6) INC WORD PTR [BX+25] (7) SUB AX,[BP+6] (8) JMP BX (9) IN AL,20H (10) STI

2、指出下列指令中存储器操作数的物理地址的计算表达式: (1) MOV AL,[SI] (2) MOV AX,[BP+6]

(3) MOV 5[BX+DI],AX (4) INC BYTE PTR [BX+SI] (5) ADD AL,ES:[BX] (6) SUB AX,ALFA[SI] (7) JNC NEXT (8) MUL ALFA

习题三

1、判别下列语句是否有错并说明理由: (1) MOV [SI],?A? (2) MOV AL,BX (3) MOV BL,SI+2 (4) INC [BX]

(5) MOV 256,AL (6) MOV AX,BYTE PTR ALFA (7) MOV ALFA,BATA (8) MUL -25 (9) PUSH 20A0H (10) POP CS

2、请执行下段程序,给出各寄存器的内容:

MOV AX,0A0BH DEC AX

SUB AX,0FFH AND AX,00FFH MOV CL,3 SAL AL,CL ADD AL,25H XCHG AL,AH PUSH AX POP BX INC BL MUL BL

3、已知AX=003AH,请根据AX值用指令实现:使BL=03H,BH=0AH,CX=03H+0AH,DX=2*3AH,SI=0A3H,DI=0A03H。

4、在A地址处有100个数据,今要求传送到B地址处,请编程实现。

5、使AL高4位置1,判断低4位是否大于9,如大于9,则使低4位变反,否则将低4位置成9,试编程实现之。

6、在A、B地址起各有4个字节单元的无符号数,试编程实现二个无符号数的和,并将值存于C址起的单元中。

7、阅读下面程序并说明其功能: LEA SI,A

LP: IN AL,20H AND AL,0FH OR AL,30H CMP AL,?*? JZ ENDPR MOV [SI],AL INC SI

OUT 30H,AL JMP LP

ENDPR: HLT

8、在A字单元有一个有符号被除数,在B字单元有一个有符号除数,求其商存于C字单元中,余数存D字单元中,试编程实现之。

9、在A址起有一个50字节长的字符串,请查找串中含有最后一个“?”字符字节相对A址的距离(设串中含有多个“?”号)。 习题四

1、阅读下面数据搬移程序段,改正使用不当的语句。 A DB 35,47,2AH,?XYZ? B DB N DUP(0) N EQU $-A MOV SI,A MOV DI,B

MOV CX,LENGTH A LP: MOV AX,[SI]

MOV [DI],AX INC SI INC DI DEC CX LOOP LP

2、下面为一个定义数据的段,请图示它们在存储器中的存放形式。 DATA SEGMENT A DB 1,2,3,4 B DB ?ABCD? C DW 4 DUP(0) N EQU 12

X DW 33020AH Y DD 0ABCDH DATA ENDS

3、按上题给出的数据结构,求下面表达式的值: SEG A、OFFSET A、TYPE A、SIZE A、LENGTH A SEG C、OFFSET C、TYPE C、SIZE C、LENGTH C 4、请编程实现由键盘输入你的名字(拼音名),并把它显示在屏幕上,在你的名字两端各加上三个“*”号,如“***LIMING***”。

5、对下面程序进行注释,并说明其所实现的功能。 DATA SEGMENT A DB ?123ABC? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA ST: MOV AX,DATA MOV DS,AX LEA BX,A MOV CX,6 MOV AH,2

LP: MOV AL,[BX] XCHG AL,DL INC BX INT 21H LOOP LP

MOV AH,4CH INT 21H CODE ENDS END ST

6、实现满足下面要求瓣各宏定义:

(1) 可对任一寄存器实现任意次数的左移操作。 (2) 任意两个单元中的数据相加存于第三个单元中。

(3) 对任意8位寄存器中的数据转为ASCII码并在屏幕上显示。 习题五

1、将在A单元中的二位16进制数拆成二个16位数,并分别转换为相应的ASCII码存于B及C单元中。

2、将A单元的内容求补,并与原内容相“与”,结果存入B单元中。

3、在ABC起的连续4个单元中放有4个无符号数。试编程实现第1、4二数求和,再减去第2数和第3数,结果存入XYZ起的单元中。

4、判PAR单元数据的奇偶性,当为奇数时置MARK单元为1,当为偶数时置MARK单元为0。

5、将A单元起的100个数据移到B单元起的存储区中,试用三种方法实现数据的转移。 6、把A单元起三个单元中的无符号数,按递增顺序重新排序,并放回原存储单元中。 7、在MN起的三个单元中存有三个字符,要求将第一个字符高4位清零,第二个字符右移4位,且移入第三个字符的低4位而保持第三个字符的高4位不变,试编程实现。 8、从键盘输入一个字符,根据其内容对X单元按下式赋值,请编程实现。

9、在A、B单元各有一个有符号数,从键盘输入一个字符,当其为“A”时,表示将该二个有符号数相加,结果存入C单元中。当收到“S”时,表示将该二个有符号数相减,结果也存入C单元中。当为非“A”或“S”时,则不做运算,置C单元为0FFH。 10、在数据段中有5组字符串(分别有不同含义)。根据键入序号(1-5)输出对应序号的字符串到屏幕。要求编写为循环程序,可键入不同序号并显示相应字符串。

11、在A数据区有一个25个字符的字符串,试编程实现按ASCII码值进行升序的排序。 12、在ARRAY址起有20个有符号数。试编程将其正数存于A起的单元中。负数存于B起的单元中,且显示正数及负数的个数。

13、有一个50个字符的串,试把其中小写字母改为大写字母,把数字改为“*”,其它字符不变。

14、统计一班30名学生成绩的等级(A:90-100,B:80-89,C:70-79,D:60-69,E:60以下)。统计结果分别存入A,B,C,D,E单元中。

15、从键盘上输入二个字符存A,B单元中,比较它们的大小写,并在屏幕显示:A>B或B>A。

16、对双字变量DV中的值为1的位进行统计,统计结果存入XN单元中。

17、有一个50个数字的数据区,统计其为偶数和奇数的数字各为多少,分别存入A和B单元中。

18、对A址起的30个字节长的字符串,删除其中的数字符,后续字符向前递补,剩余字符补空格字符,编程实现之。

19、将CSTRN起的50个字符的串,统计相同字符的字符数,找出相同字符数最多的字符,存于CMORE单元中。

20、数组A和B,各有20个数据,它们各已按升序排放。现要求将这两个数组合并为一个数组C,且要求其数据也按升序排放,试编程实现。

21、已知两组字符串,各有50个字符。找出同在两串中的字符存于第三组字符串中,并统计串长存于SL单元中。

22、在NUM单元起,存放有a,b,c,d 4个数,求((a*b+10)*10+c)*10+d运算,结果存入RESL字单元中(设结果小于16位数)。

23、通过平方表,完成下式运算:x=a2+b2。式中a、b为1-9间的数。

24、编程:(1) 将A址起的20个无符号数按升序排放在原址处。(2) 将已排好序的20个数,查找有否与AL中数值相同的数。(3) 有相同的数,显示“YES”,无相同的数,显示“NOT”。编写上述任务为子程序,并由主程序调用相应子程序完成。

25、在A址起有10个压缩型BCD数。(1) 将BCD数转为的ASCII码。(2) 将ASCII码在