chapter4汇编语言程序设计

更新时间:2023-11-05 21:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第四章 汇编语言程序设计

4-1 若晶振为12MHz,试编制延时2ms和1s子程序。

4-2 将20H单元中8位无符号数,转换成3为BCD码并存放在30H(百位)和31H(十位)

单元中。

4-3 将30H单元内的2个BCD数相乘,乘积位BCD数,并把乘积存放在31H单元。 4-4 试求21H和20H单元中16位带符号二进制补数码的绝对值,并送回20H和21H单元,

高位在先,低位在后

4-5 试求内部RAM30H~37H单元中8个无符号数的算术平均值,结果存入38H单元。 4-6 试编一数据块搬迁程序。将外部RAM2000H~204FH单元中的数,移入内部RAM30H~7FH

单元中。

4-7 在内部RAM的BLOCK开始的单元中有一无符号数据块,数据块长度存入LEN单元。试

编程求其中的最小数并存入MINI单元。

4-8 在内部RAM的BLOCK开始的单元中有一带符号数据块其长度存入LEN单元。试编程求

其中正数和负数的代数和,并分别存入PSUM与MSUM指向的单元中。

4-9 在内部RAM的BLOCK开始的单元中有一无符号数据块,其长度存入LEN单元。试编程

重新按递增次序排列,并存入原存储区

4-10 试编程将(R2R3)中的二进制数转换成BCD码,并存入R0指向的单元中。用除以10

次幂取商法编程。

4-11 试编程将R0指向的内部RAM中16个单元的32个十六进制数,转换成ASCII码并存

入R1指向的内部RAM中。

4-12 在内部RAM的ONE和TWO单元各存有一带符号X和Y。试编程按下式要求运算,结果F存入FUNC单元。

X+Y 若X位正奇数 X∧Y 若X位正偶数 F= X∨Y 若X位负奇数 X+Y 若X位负偶数 X 若X等于零

4-13 设变量X存入VAR单元,函数F存入FUNC单元,试编程按下式要求给F赋值。

1 X>0

F= 0 X=0

-1 X<0

4-14 设变量X存入VAR单元,函数F存入FUNC单元,试编程按下式要求给F赋值。 1 X≥20

F= 0 20≥X≥10

-1 X<10

4-15 试编程,根据R3内容00H~0FH,转换到16个不同分支,分支均处于同一2程序存

储器之内。

4-16 试编程,根据R3内容00H~0FH,转换到16个不同分支,分支均处于同一2程序存

储器任何位置。

试编一4字节装载子程序LOAD4。

功能:内部RAM中4个单元内容装载到工作寄存器。 入口:(R0)=低字节地址指针

出口:(R7R6R5R4)=装入的4个单元内容 4-17 试编一查表求平方子程序SQR。

功能:用指令MOVC A,@A+PC求平方值(x<15)。 入口:(A)=x 出口:(A)=x*x

4-18 试编一多字节右移子程序NRRC。 功能:n字节数右移一位(相当除2)。 入口:(R0)=操作数高字节地址指针 (R7)=字节数 n

出口:(R0)=操作数低字节地址指针 4-19 试编一多字节乘以10子程序MUL10。 功能:内部RAM中的n字节数乘以10。 入口:(R0)=操作数低字节地址指针

(R7)=字节数 n

出口:(R0)=操作数高字节地址指针 4-20 试编一3字节数乘1字节数子程序MUL4。 功能:3字节数乘以1字节,乘积为4字节 入口:(R0)=被乘数低字节地址指针 (R2)=乘数

出口:(R1)=乘积高字节地址指针

4-21 试编一4字节数除以1字节数子程序DIV4。 功能:4字节数除以1字节,商为3字节 入口:(R0)=被除数低字节地址指针

(R6)=除数

出口:(R3R4R5)=商 (R2)=余数

4-22 把长度为10H的字符串从内部RAM的输入缓冲区inbuf向设在外部RAM的输出缓冲区outbuf进行传送,一直进到遇见回车符CR或整个字符串传送完毕.

4-23 内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志.编程实现在表中找出最小数.

4-24 求8个数的平均值,这8个数以表格形存放在从table开始的单元中.

4-25 把一个8位二进制数的各位用ASCII码表示之(亦即为”0”的位用30H表示,为”1”的位用劲1H表示).该数存放在内部RAM中byte单元中.变换后得到的8个ASCII码存放在外部RAM以buf开始的存储单元中去.

4-26 ASCII码字符中最后一个非空格字符,字符串从外部RAM8100H单元开始存放,并用一个回车符(0DH)作结束.编程实现搜索并把搜索到的非空格字符的地址存入内部RAM单元40H和41H中,其中高字节放入41H单元.

4-27 比较两个ASCII码字符串是否相等.字符串的长度在内部RAM41H单元,第一个字符串的首地址为42H,第二个字符串的首地址为52H.如果两个字符串相等,则置内部RAM40H为00H;否则404-28 在外部RAM首地址为table的数据表中,有10个字符的数据.编程将每个字节的最高位无条件地置”1”.

4-29 将8000H开始的有200个字节的源数据区,每隔一个单元送到4000H开始的数据区.在目的数据区中,每隔两个单元写一个数.如遇0DH(回车)则传送结束.

4-20 输入缓溃区inbuf存有80个字节,编程实现将其所有的组分隔符(1DH)的地址依次压入separ栈中.

4-31 从内部RAM缓冲区buffin向外部RAM buffout传送一个字符串,遇9DH结束,置PSW的F0位为”1”;或传送完128个字符后结束,并置PSW的OV位为”0”.

4-32 编写读取运行的定时器中计数器值并送LED显示器显示的程序。可根据需要定义子程序。

4-33 求16位带符号二进制补码数的绝对值。假定补码放在内部RAM的num和num+1单元中,求得的绝对值仍放在原单元中。

4-34 求16位补码数的原码。16位补码数放在内部RAM的data和data+1单元中,转换后得到的原码仍放在原单元中。

4-35 从内部RAM20H单元开始存放一组带符号数,字节个数存在1FH中。请统计出其中大于0、等于0和小于0的数的数目,并把统计结果分别存人one、two和three3个单元中。 4-36 5个双字节数,存放在外部RAM中的barf开始的单元中,求它们的和,并把和存放在sum开始的单元中,请编程实现。

4-37 把外部RAM中block1为首地址的数据块传送到内部RAM以block2为首地址的单元中去,数据块的长度为n字节。

本文来源:https://www.bwwdw.com/article/uer2.html

Top