chapter4汇编语言程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章汇编语言程序设计

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字节。

相关文档
最新文档