用IBM-PC汇编语言实现1到100求和并将结果输出

用IBM-PC汇编语言实现1到100求和并将结果以十六进制形式输出。

.MODEL SMALL
.DATA
SUM DB ?
MSG DB "The sum in hex is: $"
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX ;设置数据段

MOV AH,00 ;清空寄存器
MOV AL,00

MOV CX,64 ;设置循环次数,这里是100/2=50
MOV BL,01 ;初始化计数器

LOOP_START:
ADD AL,BL ;将计数器加到总和中
INC BL ;计数器加1
LOOP LOOP_START ;循环

MOV SUM,AL ;将结果存入SUM变量

MOV AH,09 ;输出提示字符串
MOV DX,OFFSET MSG ;将DX设置为字符串地址
INT 21H ;调用dos中断

MOV AH,02 ;输出16进制数
MOV DL,SUM ;将SUM寄存器中的结果移动到DL
MOV CX,04 ;重复4次
HEX_LOOP:
PUSH CX ;将CX入栈
MOV CH,DL ;将高位字节移动到CH中
SHR CH,04 ;将高位字节右移4位
CMP CH,10 ;如果大于10,表示需要加A-10
JAE HEX_A_TO_F
ADD CH,30H ;否则转换成数字
JMP HEX_DONE
HEX_A_TO_F:
ADD CH,37H ;转换成A-F字母
HEX_DONE:
MOV DL,DL ;将DL移回DL,右移4位后的初始值
SHL DL,4 ;将DL左移四位,准备处理低位字节
MOV CL,DL ;将低位字节移动到CL中
SHL CL,4 ;将CL左移四位
SHL DL,1 ;将低位字节左移一位,成为高位字节
ADD DL,CL ;将低位字节和高位字节加到一起
POP CX ;将CX弹出栈
LOOP HEX_LOOP ;循环

MOV AH,4CH ;退出程序
INT 21H

MAIN ENDP
END MAIN

  • 这篇博客也许可以解决你的问题👉 :[汇编语言 IBM-PC]寻址方式配套习题
  • 除此之外, 这篇博客: IBM-PC汇编中的 几种基本的逻辑运算 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • “与”运算(AND)
    • “或”运算(OR)
    • “非”运算(NOT)
    • “异或”运算(XOR Exclusive-OR)
      注:所有的逻辑运算都是按位操作

    “与”运算

    又称逻辑乘,可用符号·^来表示。
    如有A、B两个逻辑变量(取值为“0”或“1”),可能有4种取值情况:
    在这里插入图片描述
    应用:

    1. 清零。相应的位设为0即可。
    2. 取指定位(如低位字节)。则相应位设为1,其余位为0即可。

    “或”运算

    又称逻辑加,可以用符号+V来表示。
    应用:对特定位强行置1。
    在这里插入图片描述

    “非”运算

    在这里插入图片描述
    “非”运算的结果相当于取反。

    “异或”运算

    在这里插入图片描述
    在这里插入图片描述
    应用:

    1. 取指定位。相应的位设为0即可。
    2. 使指定位翻转。则相应位设为1,其余为设置为0即可。

    在这里插入图片描述


  • 您还可以看一下 CSDN讲师老师的探访IBM企业级区块链课程中的 探访IBM企业级区块链-3小节, 巩固相关知识点